現在、Android 5.0 MediaProjection API を使用しています。アプリケーションからプロジェクション セッションを正常に開始できましたが、ユーザーはいつでも通知バーに移動してメディア プロジェクションを停止できることに気付きました。私の目標は、このイベントをキャプチャして、いくつかのクリーンアップ アクションを実行することです。MediaProjection オブジェクトに MediaProjection.Callback を登録しましたが、通知バーからプロジェクションを手動でキャンセルし、システムが MediaProjection.Callback の onStop メソッドを呼び出そうとすると、次のように nullpointer 例外が発生します。
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");
}
}
なぜこれが起こっているのですか?
よろしくお願いします!