0
私のAndroidアプリはバックグラウンドミュージックの再生に問題があるようです。どのように音楽を続けるのですか?
私は、アプリケーションを通して音楽を再生するためのコードを書いています... ボタンをクリックすると、新しい.classアクティビティに移動します。音楽は数秒後に遅れる....または最初から再起動しますか?
これは私のコードです:MusicService.java
public class MusicService extends Service implements
MediaPlayer.OnErrorListener {
private final IBinder mBinder = new ServiceBinder();
private MediaPlayer mPlayer;
public static int length = 0;
public MusicService() {
}
public class ServiceBinder extends Binder {
MusicService getService() {
return MusicService.this;
}
}
@Override
public IBinder onBind(Intent arg0) {
return mBinder;
}
@Override
public void onCreate() {
super.onCreate();
mPlayer = MediaPlayer.create(MusicService.this, R.raw.bgmusic);
mPlayer.setOnErrorListener(this);
if (mPlayer != null) {
mPlayer.setLooping(true);
mPlayer.setVolume(100, 100);
}
mPlayer.setOnErrorListener(new OnErrorListener() {
public boolean onError(MediaPlayer mp, int what, int extra) {
onError(mPlayer, what, extra);
return true;
}
});
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Log.d("Moron Test", "Moron Test OnStart Length : " + length);
if(length == 0)
{
mPlayer.start();
}
else
{
resumeMusic();
}
return START_STICKY;
}
public void pauseMusic() {
if (mPlayer != null && mPlayer.isPlaying()) {
mPlayer.pause();
length = mPlayer.getCurrentPosition();
}
Log.d("Moron Test", "Moron Test pauseMusic Length : " + length);
}
public void resumeMusic() {
Log.d("Moron Test", "Moron Test resumeMusic Length : " + length);
if (mPlayer != null && mPlayer.isPlaying() == false) {
mPlayer.seekTo(length);
mPlayer.start();
}
else
{
mPlayer.start();
}
}
public void stopMusic() {
mPlayer.stop();
mPlayer.release();
mPlayer = null;
}
@Override
public void onDestroy() {
super.onDestroy();
if (mPlayer != null) {
try {
pauseMusic();
mPlayer.stop();
mPlayer.release();
} finally {
mPlayer = null;
}
}
}
public boolean onError(MediaPlayer mp, int what, int extra) {
Toast.makeText(this, "music player failed", Toast.LENGTH_SHORT).show();
if (mPlayer != null) {
try {
mPlayer.stop();
mPlayer.release();
} finally {
mPlayer = null;
}
}
return false;
}
}
と私の他のコード:私の通常のアプリすべてにWAEBaseActivity.java
public class WAEBaseActivity extends Activity {
Intent svc;
boolean isServiceStarted;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
isServiceStarted = false;
}
@Override
protected void onResume() {
super.onResume();
try {
if (Prefs.getMusic(this)) {
svc = new Intent(this, MusicService.class);
startService(svc);
isServiceStarted = true;
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
protected void onPause() {
super.onPause();
if(isServiceStarted)
stopService(svc);
}
}
。クラス私はこのコード行を持っています
public class Home extends WAEBaseActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
MusicService.length = 0;
それはそれについてです。
ワヒドは
私はこれを持ってプレイヤーを開始するための情報を得ています: public class Home extends WAEBaseActivity { – Wally