Я создаю сервис медиаплеера для воспроизведения медиа-файла из Интернета, например:
public class MyService extends Service{
private static final String TAG = "MyService";
MediaPlayer mediaPlayer;
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onCreate() {
Toast.makeText(this, "My Service Created", Toast.LENGTH_LONG).show();
Log.d(TAG, "onCreate");
mediaPlayer = new MediaPlayer();
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
}
@Override
public void onDestroy() {
Toast.makeText(this, "My Service Stopped", Toast.LENGTH_LONG).show();
Log.d(TAG, "onDestroy");
mediaPlayer.stop();
}
@Override
public void onStart(Intent intent, int startid) {
Toast.makeText(this, "My Service Started", Toast.LENGTH_LONG).show();
Log.d(TAG, "onStart");
String rtsp;
Bundle re= intent.getExtras();
rtsp=re.getString("rtsp");
try {
mediaPlayer.setDataSource(rtsp);
mediaPlayer.prepare();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
mediaPlayer.start();
}
}
Теперь я хочу получить панель поиска из действия, подобного этому:
SeekBar seekbar= (SeekBar)findviewbyid(R.id.seekbar);
Но я не могу :( Пожалуйста, помогите мне, как это сделать!
РЕДАКТИРОВАТЬ
Я нашел другой способ решить мою проблему без использования сервиса Bind :)Вот оно:
В своем классе обслуживания создайте статический метод, подобный следующему:
public static void setMainActivity(Player_Activity mainActivity)
{
MAIN_ACTIVITY=mainActivity;
}
Конечно, вы должны объявить статическую переменную:
private static Player_Activity MAIN_ACTIVITY;
Далеев своей деятельности, прежде чем вызывать startService (), вы должны вызвать этот метод, чтобы настроить основной вид деятельности для своего сервиса следующим образом:
MyService.setMainActivity(Player_Activity.this);
Intent myservice= new Intent(this,MyService.class);
startService(myservice);
И, наконец, вы можете делать все, что угодно с вашим действием в вашем сервисе.вот так:
final TextView tv_test=(TextView)MAIN_ACTIVITY.findViewById(R.id.textview);
Вот и все!Надеюсь, что это поможет:)
Простите, если я ошибаюсь в английском;), мой английский не очень хорош:)