我目前正在使用 Android 5.0 MediaProjection API。我已经成功地从我的应用程序启动了投影会话,但是我注意到用户可以随时转到通知栏并停止媒体投影。我的目标是捕获此事件并执行一些清理操作。我已经在我的 MediaProjection 对象中注册了一个 MediaProjection.Callback,但是,当我从通知栏手动取消投影并且系统尝试调用我的 MediaProjection.Callback 的 onStop 方法时,我收到一个空指针异常,如下所示:
03-24 12:54:56.575: W/Binder(9589): Caught a RuntimeException from the binder stub implementation.
03-24 12:54:56.575: W/Binder(9589): java.lang.NullPointerException: Attempt to invoke virtual method 'void android.media.projection.MediaProjection$CallbackRecord.onStop()' on a null object reference
03-24 12:54:56.575: W/Binder(9589): at android.media.projection.MediaProjection$MediaProjectionCallback.onStop(MediaProjection.java:188)
03-24 12:54:56.575: W/Binder(9589): at android.media.projection.IMediaProjectionCallback$Stub.onTransact(IMediaProjectionCallback.java:49)
03-24 12:54:56.575: W/Binder(9589): at android.os.Binder.execTransact(Binder.java:446)
我的 MediaProjection.Callback 在这一点上几乎什么也没做,我粘贴它是为了完整性:
private class MediaProjectionCallback extends MediaProjection.Callback {
@Override
public void onStop() {
Log.e("MediaProjection", "onStop");
}
}
任何想法为什么会发生这种情况?
提前谢谢了!