我在Android中创建了一个音乐播放器应用,我尝试将MediaPlayer设置为服务,以便它可以在所有活动/片段中保留。服务代码:
public class PlayerService extends Service {
MediaPlayer mediaPlayer;
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onCreate() {
mediaPlayer = new MediaPlayer();
}
public void LoadUrl(String url){
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
try {
mediaPlayer.setDataSource(url);
} catch (IOException e) {
e.printStackTrace();
}
try {
mediaPlayer.prepare();
} catch (IOException e) {
e.printStackTrace();
}
//mediaPlayer.start();
Play(mediaPlayer);
}
public void Play(MediaPlayer player) {
player.start();
}
public void Pause(MediaPlayer player) {
player.pause();
}
}
和MainActivity:
public class MainActivity extends AppCompatActivity {
PlayerService playerService;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if(savedInstanceState != null){
} else {
playerService = new PlayerService();
Intent startPlayer = new Intent(this, PlayerService.class);
startService(startPlayer);
....
当MainActivity启动时,它会启动该服务,但是,当我尝试使用以下内容将Url加载到MediaPlayer中时:
playerService.LoadUrl(feedItem.getAudioUrl());
我得到一个例外,说服务中的mediaPlayer为空。如何确保保留mediaPlayer?
答案 0 :(得分:0)
您正在尝试使用startService启动服务而不使用onStartCommand服务,否则服务将无法启动。所以你的媒体播放器不会被初始化