Matt02's Note

仕事関係。Android、Unity、cocos2d-xに関してのメモを書いていきます。

【cocos2d-x】【Android】Android5.0(Lolipop)においてcocos2d-xが動かないときにすること

最初からAndroid5.0(Lolipop)な端末だと、ビルトインメディアプレーヤーがAwsomePlayerではなく、NuPlayerというのが選択されているっぽい、、
で、Music鳴らすときに悪さしている…StartとResetを繰り返してしまう…

今回修正する箇所はCocos2dxMusic.java

if (this.mBackgroundMediaPlayer == null) {
	Log.e(Cocos2dxMusic.TAG, "playBackgroundMusic: background media player is null");
} else {
	// if the music is playing or paused, stop it
	if (this.mBackgroundMediaPlayer.isPlaying()) {
	this.mBackgroundMediaPlayer.pause();
}
this.mBackgroundMediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {

	@Override
	public void onPrepared(MediaPlayer mp) {
		// TODO Auto-generated method stub
		mp.seekTo(0);
		mp.start();
	}});
 	this.mBackgroundMediaPlayer.setLooping(isLoop);

	try {
 		this.mBackgroundMediaPlayer.prepare();
		//this.mBackgroundMediaPlayer.seekTo(0);
		//this.mBackgroundMediaPlayer.start();
 
 		this.mPaused = false;
 	} catch (final Exception e) {
 		Log.e(Cocos2dxMusic.TAG, "playBackgroundMusic: error state");
 	}
}
private MediaPlayer createMediaplayerFromAssets(final String pPath) {
    MediaPlayer mediaPlayer = new MediaPlayer();
	try {
		if (pPath.startsWith("/")) {
 			mediaPlayer.setDataSource(pPath);
 		} else {
			final AssetFileDescriptor assetFileDescritor = this.mContext.getAssets().openFd(pPath);
			mediaPlayer.setDataSource(assetFileDescritor.getFileDescriptor(), assetFileDescritor.getStartOffset(), assetFileDescritor.getLength());
 		}

//		mediaPlayer.prepare();
 
 		mediaPlayer.setVolume(this.mLeftVolume, this.mRightVolume);
 		} catch (final Exception e) {
 			mediaPlayer = null;
 			Log.e(Cocos2dxMusic.TAG, "error: " + e.getMessage(), e);
 		}
 		return mediaPlayer;
 	}

こんな感じにすれば動くはず