【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; }
こんな感じにすれば動くはず