5

音量アップ/ダウンハードウェアボタンを押した場合に音量インジケータービューフォームが表示されないようにする方法はありますか?

デモアプリにのみ必要です。したがって、メソッドはAppStoreで安全である必要はありません。

4

3 に答える 3

4

それはそのように機能します:

  • サイレントファイルを再生する
  • メインビューにボリュームビューを追加します
  • ビューを後ろに送る

例えば

 NSString *url = [[NSBundle mainBundle]
                       pathForResource:@"silent" ofType:@"mp3"];
 MPMoviePlayerController *moviePlayer = [[MPMoviePlayerController alloc]
                       initWithContentURL:[NSURL URLWithString:url]];
 [moviePlayer play];

 MPVolumeView *volumeView = [[[MPVolumeView alloc] initWithFrame:
                       CGRectMake(0, 0, 1, 1)] autorelease];
 [self.view addSubview:volumeView]; 
 [self.view sendSubviewToBack:volumeView];
于 2010-10-02T17:33:49.527 に答える
2

IIRC、MPVolumeViewの存在は、ボリュームインジケーターオーバーレイの表示を禁止します。関連するビューを貼り付けて、これが当てはまるかどうかを確認してみてください。

次に、さまざまなトリックを試して、効果的に非表示にすることができます。

  • 非表示にします(またはスーパービューを非表示にします)。
  • そのアルファ(またはスーパービューのアルファ)を​​0または0.01などに設定します。
  • 画面外に移動します
  • 画面のほとんど外に移動します(たとえば、左上のピクセルのみが画面に表示されます)
  • 別のビューの下に貼り付けます。
  • これをclipsToBounds=ONのサブビューに貼り付け、それらの境界の外側に移動します
  • volumeView.layer.maskを新しい(したがって完全に透過的な)CALayerに設定します。volumeView.userInteractionEnabled=NOに設定します。

これらはすべてMPVolumeViewで理論的に検出可能ですが、一部は機能すると思います。

于 2010-10-02T12:56:54.953 に答える
1
- (void)viewDidLoad
 {
  [super viewDidLoad];

  //get current volume level
  oldVolume= [[MPMusicPlayerController applicationMusicPlayer] volume];

  //hide volume indicator         
  MPVolumeView *volumeView = [[[MPVolumeView alloc] initWithFrame:
                             CGRectMake(0, 0, 1, 1)] autorelease];

  musicController=[MPMusicPlayerController applicationMusicPlayer];
  [self.view addSubview:volumeView];
  [self.view sendSubviewToBack:volumeView];
  [NSTimer scheduledTimerWithTimeInterval:0.02 target:self selector:@selector(volume) userInfo:nil repeats:YES];
}

- (void)volume
{
  if ([musicController volume]>oldVolume || [musicController volume]<oldVolume) {
    [musicController setVolume:oldVolume];
    // do some stuff here and the volume level never changes, just like volume action in camera app
   }
}
于 2013-02-12T06:58:40.290 に答える