我創建一個媒體播放器服務,從互聯網上播放媒體文件,如:如何從mediaplayer服務中獲取seekbar的活動?
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);
但我做不到「T :(請幫我該怎麼做!
編輯
我發現了另一個的方式來解決我的問題,而無需使用綁定服務:) 這就是:
在服務類中,創建這樣一個靜態方法:
public static void setMainActivity(Player_Activity mainActivity)
{
MAIN_ACTIVITY=mainActivity;
}
Ofcourse,您必須聲明靜態varible:
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);
這一切!希望這有助於:)
原諒我,如果我得到一些英文錯誤),我的英語水平不是很好:)
你需要** **綁定的服務活動 – Samuel
感謝,但我不知道怎麼來的,我是一個新手:) –