Я хочу, чтобы фоновая музыка играла, пока пользователь играет в игру.Музыка запускается, когда пользователь запускает приложение, приостанавливается, когда он покидает его, и возобновляется, когда они возвращаются в приложение.
Я пытался использовать этот метод , я немного его отредактировал:
public class MainActivity extends Activity {
private boolean bounded;
private BackgroundSoundService backgroundSoundService;
ServiceConnection connection = new ServiceConnection() {
@Override
public void onServiceDisconnected( ComponentName name ) {
bounded = false;
backgroundSoundService = null;
}
@Override
public void onServiceConnected( ComponentName name, IBinder service ) {
bounded = true;
BackgroundSoundService.LocalBinder localBinder = (BackgroundSoundService.LocalBinder) service;
backgroundSoundService = localBinder.getServiceInstance();
}
};
@Override
public void onCreate( Bundle savedInstanceState ) {
super.onCreate(savedInstanceState);
// (code that's not necessary)
backgroundSoundService.start(); // this is where the error is thrown
}
@Override
public void onPause() {
super.onPause();
backgroundSoundService.pause();
}
@Override
public void onResume() {
super.onResume();
backgroundSoundService.resume();
}
@Override
public void onStop() {
super.onStop();
backgroundSoundService.pause();
}
@Override
public void onStart() {
super.onStart();
Intent intent = new Intent(this, BackgroundSoundService.class);
bindService(intent, connection, BIND_AUTO_CREATE);
backgroundSoundService.start();
}
@Override
public void onDestroy() {
super.onDestroy();
backgroundSoundService.destroy();
}
}
Я использую упражнение для воспроизведения, приостановки и возобновления фоновой музыки.Я опущу ненужные методы / строки для этого вопроса здесь:
public class BackgroundSoundService extends Service {
private static final String TAG = null;
public IBinder binder = new LocalBinder();
public IBinder onBind( Intent arg0 ) {
return binder;
}
public IBinder onUnBind( Intent arg0 ) {
return null;
}
public class LocalBinder extends Binder {
public BackgroundSoundService getServiceInstance() {
return BackgroundSoundService.this;
}
}
}
Однако, когда я запускаю приложение, я получаю NullPointerException
в классе MainActivity
(в методе onCreate
Я прокомментировал это в коде.)
Кажется, переменная еще не инициализирована, но мне нужно запустить музыку, когда пользователь открывает приложение.
Я также пыталсяудаление backgroundSoundService.start();
из метода onCreate
, чтобы музыка запускалась при вызове onStart
.Однако, когда я это делаю, я получаю ту же ошибку.
Итак, как я могу инициализировать backgroundSoundService
, прежде чем он будет использован для вызова своих методов?