【发布时间】:2017-04-22 09:16:50
【问题描述】:
我正在构建一个简单的音乐应用程序。
无论我尝试什么,我都无法停止一首歌曲以播放一首新歌。我试过一起停止、释放、停止和释放;我创建了一个服务;我什至尝试使用当前位置来获取 MP3 的位置,如果位置大于 1,则考虑播放它。
但是没有任何效果,我想弄清楚这一点我很生气。
我为此工作了 5 天,但我所做的一切都失败了。
我将不胜感激任何建议和明确的解决方案。
我是一个菜鸟,我正在努力解决自己的问题,但这个问题让我很难过。
import android.app.Service;
import android.content.Intent;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.os.IBinder;
import android.support.annotation.Nullable;
import android.util.Log;
import java.io.IOException;
public class MyService extends Service {
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
MediaPlayer mediaplayer;
mediaplayer = new MediaPlayer();
mediaplayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
String extRec = intent.getExtras().getString("extRec");
Log.d("My Service", "Received extra: " + extRec);
if (mediaplayer.isPlaying()){
Log.d("My Service is playing ", "yes");
}
else {
Log.d("My Service is playing ", "no");
}
//mediaplayer.stop();
//mediaplayer.release();
try {
final String AudioURL = extRec;
Log.d("My Service audioURL ", AudioURL);
mediaplayer.setDataSource(AudioURL);
mediaplayer.prepare();
Log.d("My Service", "position: " + mediaplayer.getCurrentPosition() );
mediaplayer.start();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SecurityException 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();
}
return START_STICKY;
}
}
【问题讨论】:
-
你在
start()方法之前调用了getCurrentPosition(),那么你对当前位置有什么期望?
标签: android service android-mediaplayer media