android - Android VideoView OnCompletionListenerが機能しない

android android-videoview

ファイルシステムからビデオを再生する単純なVideoViewを実装しようとしています。ビデオは正常にロードされ、正常に再生されます。ただし、アクティビティのfinish()を実行して次のアクティビティから再開できるように、ビデオの再生がいつ終了したかを知りたいです。これが私が持っているものです。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/videoPlayer"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:keepScreenOn="true"
    android:orientation="vertical" >
    <VideoView
        android:id="@+id/videoView"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" />
</LinearLayout>


活動は以下の通りです。

    public void onCreate(Bundle savedInstanceState)
    {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.videoplayer);

    videoView = (VideoView) findViewById(R.id.videoView);
    videoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener()
    {
        @Override
        public void onCompletion(MediaPlayer mp)
        {
            Intent result = new Intent();
            setResult(1, result);
            finish();
        }
    }); // video finish listener

    Intent intent = getIntent();

    // Receiving the Data
    String fileName = intent.getStringExtra("fileName");

    videoView.setVideoPath(fileName);
    videoView.setMediaController(new MediaController(this));
    videoView.requestFocus();
    videoView.start();}


このアクティビティを別のアクティビティから呼び出します。これがそのアクティビティ定義です。

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/gallery"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical"
        android:keepScreenOn="true">

        <ImageView
            android:id="@+id/imageView"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:contentDescription="@string/imageViewDescription" />
    </LinearLayout>


VideoPlayerアクティビティクラス

public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);

    requestWindowFeature(Window.FEATURE_NO_TITLE);

    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);

    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

    setContentView(R.layout.imageplayer);

    imageView = (ImageView) findViewById(R.id.imageView);

    updateUI(new File("/sdcard/Test/Test.3gp");
}

public void updateUI(File file)
{
        if (file.getName().toLowerCase().endsWith(".jpg") || file.getName().toLowerCase().endsWith(".png"))
        {
            Bitmap myBitmap = BitmapFactory.decodeFile(file.getAbsolutePath());

            imageView.setImageBitmap(myBitmap);
        }
        else if (file.getName().toLowerCase().endsWith(".3gp") || file.getName().toLowerCase().endsWith(".mp4"))
        {
            //Starting a new Intent
            Intent nextScreen = new Intent(getApplicationContext(), VideoPlayer.class);

            //Sending data to another Activity
            nextScreen.putExtra("fileName", file.getAbsolutePath());

            released = false;

            startActivityForResult(nextScreen, resultCode);
        }
    }
}

public void onActivityResult(int requestCode, int resultCode, Intent data)
{
    super.onActivityResult(requestCode, resultCode, data);
}


onCompletionメソッドが呼び出されることはなく、このActivityの呼び出し元のonActivityResult()メソッドも呼び出されません。これの何が悪いのか知りたいのですが。 「.3gp」ファイルと「.mp4」ファイルの両方を再生してみましたが、同じ結果が得られました。助けてください
答え
さて、私はここで何の返答も得られなかったので、私は多くの異なるアプローチを試して、ついにこれでいくつかの運がありました。 Image ViewerアクティビティでVideo Playerアクティビティを呼び出す代わりに、UIのない​​空のアクティビティを作成しました。このアクティビティのファイルを繰り返し処理し、ファイル名をインテントのパラメーターとして渡して、イメージビューアアクティビティまたはビデオプレーヤーアクティビティを呼び出します。これは問題なく機能しており、問題はありません。以前の実装が機能しなかった理由について誰かが回答してくれることを願っています。
関連記事

android - ICSで顔認証が有効になっているかどうかを検出するにはどうすればよいですか?

android - Maven、ActionBarSherlock v4、Roboguice v2-ビルドするにはどうすればよいですか?

java - Bluetooth通信用の軽量対称鍵アルゴリズム?

php - WindowsのApacheでexecを実行する

android - Android向けのsendDataMessage()の動作例

android - AndroidでTabLayoutを使用しているときにすべてのアクティビティを更新するにはどうすればよいですか?

android - 多数のテキスト行とスタイルを持つEditTextで2Dスクロールを有効にします

android - レイアウトが明示的に宣言されていない場合、アクティビティのデフォルトのレイアウトは何ですか?

android - AndEngine Androidでスプライトを落とす方法

android - Android ADTインストールのトラブルシューティング