Кнопка управления гарнитурой Android Studio Click Events Error
Я получаю сообщение об ошибке в своем приложении для Android, когда я вызываю
actionPlaying
кнопка в
onPlay
метод.
Вот мой код:
@Override
public void onReceive(Context context, Intent intent)
{
if(event.getAction() != KeyEvent.ACTION_DOWN) return;
switch (event.getKeyCode())
{
case KeyEvent.KEYCODE_HEADSETHOOK:
case KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE:
actionPlaying.playandpause();
Toast.makeText(context,"Play",Toast.LENGTH_SHORT).show();
break;
case KeyEvent.KEYCODE_MEDIA_NEXT:
break;
case KeyEvent.KEYCODE_MEDIA_PREVIOUS:
break;
}
}
...
MediaSession mediaSession = new MediaSession(context,"tag");
mediaSession.setFlags(MediaSession.FLAG_HANDLES_MEDIA_BUTTONS | MediaSession.FLAG_HANDLES_TRANSPORT_CONTROLS);
mediaSession.setCallback(callback);
PlaybackState state1 = new PlaybackState.Builder()
.setActions(
PlaybackState.ACTION_PLAY | PlaybackState.ACTION_PLAY_PAUSE |
PlaybackState.ACTION_PLAY_FROM_MEDIA_ID | PlaybackState.ACTION_PAUSE |
PlaybackState.ACTION_SKIP_TO_NEXT | PlaybackState.ACTION_SKIP_TO_PREVIOUS)
.setState(PlaybackState.STATE_PLAYING, 0,1)
.build();
mediaSession.setPlaybackState(state1);
mediaSession.setActive(true);
}
MediaSession.Callback callback = new MediaSession.Callback() {
@Override
public boolean onMediaButtonEvent(@NonNull Intent mediaButtonIntent) {
return super.onMediaButtonEvent(mediaButtonIntent);
}
@Override
public void onPlay()
{
super.onPlay();
actionPlaying.playandpause();
}
@Override
public void onPause() {
super.onPause();
}
@Override
public void onSkipToNext()
{
super.onSkipToNext();
actionPlaying.clicknext();
}
@Override
public void onSkipToPrevious() {
super.onSkipToPrevious();
actionPlaying.clickback();
}
};
Класс MainActivity
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
IntentFilter filter = new IntentFilter(Intent.ACTION_MEDIA_BUTTON);
MyBroadCastRecevier r = new MyBroadCastRecevier();
registerReceiver(r, filter);
}
Это сообщение об ошибке отображается, когда приложение закрыто
Ошибка логарифма
Caused by: java.lang.NullPointerException: Attempt to invoke interface method 'void com.rehoboth.myapplication.ActionPlaying.playandpause()' on a null object reference
at com.rehoboth.myapplication.MyBroadCastRecevier.onReceive(MyBroadCastRecevier.java:48)
at android.app.ActivityThread.handleReceiver(ActivityThread.java:3177)
at android.app.ActivityThread.-wrap18(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1653)
at android.os.Handler.dispatchMessage(Handler.java:105)
at android.os.Looper.loop(Looper.java:156)
at android.app.ActivityThread.main(ActivityThread.java:6517)
Я создаю код для события кнопки гарнитуры, но он не работает.
1 ответ
Это означает, что ваш
MediaPlayer
является
null
, и вы пытаетесь позвонить
isPlaying
в теме.
Перепишите свое условие следующим образом, чтобы сначала проверить, является ли оно нулевым.
if(mp != null && mp.isPlaying()){
...