我创建一个媒体播放器服务,从互联网上播放媒体文件,如:如何从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
感谢,但我不知道怎么来的,我是一个新手:) –