2016-03-01 32 views
1

我正在开发音乐播放应用程序的Android暂停媒体播放器。当用户将我的应用程序推到背景歌曲播放良好。现在,如果用户打开相机并开始从相机录制视频,我需要暂停从我的应用程序播放的歌曲。如何执行此操作?当用户打开相机并开始录制视频

回答

0

我希望负责视频录制应用程序将请求音频焦点,通知他们应该停止播放其他应用程序。 如果这种情况下, 可以实现AudioManager.OnAudioFocusChangeListener这样的:

@Override 
public void onAudioFocusChange(int focusChange) 
{ 
    if (focusChange == AudioManager.AUDIOFOCUS_LOSS_TRANSIENT) 
    { 
      // pause playback 
    } 
    else if (focusChange == AudioManager.AUDIOFOCUS_LOSS) 
    { 
     ((AudioManager)getSystemService(Context.AUDIO_SERVICE)).abandonAudioFocus(this); 
     doStopPlayback(); 
    } 
    // else if... listen to other types of audio focus loss/ gain 
} 

其中doStopPlayback()是你释放MediaPlayer

参见本guide媒体播放方式。

-1

可以使用方法Camera.open(cameraId)检查。

创建一个新的Camera对象访问特定的硬件相机。如果相同的相机被其他应用程序打开,则会引发RuntimeException。

抛出RuntimeException 如果打开相机失败(例如,如果相机正在被其他进程或设备策略管理器使用,则禁用相机)。 更新:

例子:

public boolean isCameraUsebyApp() { 
    Camera camera = null; 
    try { 
     camera = Camera.open(); 
    } catch (RuntimeException e) { 
     return true; 
    } finally { 
     if (camera != null) camera.release(); 
    } 
    return false; 
} 

您可以使用此方法使用但保持这件事记住,此方法首先获取摄像机。

如果其获取成功那么它意味着没有其他应用程序正在使用这台相机,不要忘记再次释放它,否则你将无法再获取它。

其其抛出的RuntimeException这意味着摄像机正被另一个进程或设备策略管理器使用已禁用相机。