2012-08-21 2 views
0

Я создаю приложение для медиаплеера.Android: Как проверить статус службы в onResume активности()?

Когда я запускаю или возобновляю приложение, я хочу проверить, проигрывал ли медиаплеер уже песню.

Так что, если он был обращу свой Pause/Play ToggleButton к Пауза, иначе он не играл ранее кнопки, то будет установлен Play.

(т.е., например, если пользователь уже использует медиа-плеер и оставил приложение, нажав дома или кнопку назад & теперь он возобновляет плеер., То кнопка должна быть настроена правильно.)

Фактический MediaPlayer объект реализован в Service & все коммуникации выполняются с помощью методов AIDL interface.

Я планировал реализовать метод:

public boolean isMediaPlaying() throws RemoteException { 
    if (mediaPlayer != null) { 
     if (mediaPlayer.isPlaying()) { 
     return true; 
    } 
    return false; 
} 

Проблема: Но ServiceConnection's onServiceConnected выполняется после того, как на резюме.

Пожалуйста, предложите, как я могу проверить этот статус на возобновлении активности?

Заранее спасибо.

ответ

1

Вы можете сохранить ссылку на сервис yor в классе Application. Например

public class App extends Application { 

    private static PlayerService player; 

    @Override 
    public void onCreate() { 
     super.onCreate(); 

     if (player == null) 
      bindService(new Intent(App.this, PlayerService.class), connection, Context.BIND_AUTO_CREATE); 

    } 

    @Override 
    public void onTerminate() { 
     super.onTerminate(); 
     player.stop(); 
     player = null; 
     getApplicationContext().unbindService(connection); 
    } 

    public static PlayerService getPlayer() { 
     return player; 
    } 


    private ServiceConnection connection = new ServiceConnection() { 
     public void onServiceConnected(ComponentName className, IBinder service) { 
      player = ((PlayerService.PlayerServiceListener) service).getService(); 
     } 

     public void onServiceDisconnected(ComponentName className) { 
      player = null; 
     } 
    }; 

} 

И тогда в деятельности onResume использовать

App.getPlayer().isPlaying 
+0

Я не понимаю, на 'PlayerServiceListener' и на' OnTerminate() ' – reiley

+0

Посмотрите http://developer.android.com/ guide/components/bound-services.html –

+0

вы не должны использовать onTerminate(): http://developer.android.com/reference/android/app/Application.html#onTerminate() – takecare

Смежные вопросы