まず、動画の再生は LibGDX の「範囲外」と見なされることを知っています。
私は、Android Camera APIを使用してLibGDXの「内部」からビデオを録画して再生できるAndroidアプリに取り組んできました。多かれ少なかれ、録音部分を機能させることができました(Galaxy Aceのような一部の古いデバイスでは、画面は録音の代わりに奇妙なことをします)が、「録音したばかりのビデオを再生しています」で立ち往生しています部。インテントを呼び出して、システムのメディア プレーヤーを使用して仕事をするのは簡単です。
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.parse("file://" + Environment.getExternalStorageDirectory() + "/myvideo.mp4"), "video/*");
...
activity.startActivity(intent);
しかし、それは実際には「レスポンシブ」ではないため、適切なソリューションではありません(ユーザーがインテント内にいると制御できなくなります)。私の質問は、Android MediaPlayer API と LibGDX を同時に使用してビデオを再生することは可能ですか? ほとんどの場合、「start failed() -9」エラーが発生するか、エラーは発生しませんが、画面には何も表示されません。これは私が使用したコードの一部です:
Android の内部:
public void startPlaying(){
if (player.getCurrentPosition() == 0){
try{
player.setDisplay(holder);
player.setDataSource(path);
player.prepare();
} catch(IllegalArgumentException e) {
} catch (IOException e) {
}
}
player.start();
Log.v(LOGTAG, "Playing Started");
}
LibGDX でビデオを再生している間、画面をクリアしているだけで、他には何もしていません。
GLCommon gl = Gdx.gl20;
gl.glClearColor(0f, 0f, 0f, 0f);
gl.glClear(GL20.GL_COLOR_BUFFER_BIT | GL20.GL_DEPTH_BUFFER_BIT);
gl.glEnable(GL20.GL_DEPTH_TEST);
gl.glEnable(GL20.GL_TEXTURE);
gl.glEnable(GL20.GL_TEXTURE_2D);
gl.glDepthFunc(GL20.GL_LEQUAL);
gl.glClearDepthf(1.0F);