Javaでのスレッドの管理

user2586419

Androidアプリで2つのスレッドを作成しましたが、機能しません:(。

final Thread t1 = new Thread() {
                // @Override
                public void run() {
                    camera.takePicture(null, null, photoCallback);
                    Log.e("mediafile", mediaFile+"");
                }
            };
            t1.start();

            final Thread t2 = new Thread() {
                // @Override
                public void run() {
                    Intent myIntent = new Intent(CameraActivity.this, ModificationActivity.class);
                    Log.e("le chemin de la photo", "" + mediaFile);
                    myIntent.putExtra("imagePath", ""+mediaFile);
                    startActivity(myIntent);
                }
            };
            try {
                t1.join();
                t2.start();
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

最初のスレッドが終了していないため、インテントを開始すると、変数は常にnullになります。

私はあなたが私を助けることができることを願っています:D

よろしくお願いします

これはログです:

11-05 14:29:59.936 18216-18216 / com.mcm.citadium I / Choreographer:72フレームスキップしました!アプリケーションがメインスレッドで多くの作業を行っている可能性があります。11-05 14:30:05.140 18216-18387 / com.mcm.citadium E / mediafile:null 11-05 14:30:05.148 18216-18389 / com.mcm.citadium E / le chemin de la photo:null 11- 05 14:30:05.652 18216-18216 / com.mcm.citadium E / fin de photoCallback:/storage/sdcard0/Pictures/MyCameraApp/IMG_20131105_143005.jpg

キルウカ

まず第一に、画像をキャプチャするためにスレッドを作成する必要はありません-camera.takePictureメインスレッドで安全に実行できます-とにかく別のスレッドでそのジョブを処理します(ドキュメントを参照)。

したがって、たとえば、ボタンonClickハンドラーで写真撮影アクティビティをトリガーできます

        shootButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                    mCamera.takePicture(null, null, photoCallback);
            }
        });

あなたは、photoCallbackその後、次のようになります。

    Camera.PictureCallback photoCallback = new Camera.PictureCallback() {
        public void onPictureTaken(byte[] data, Camera camera) {
            // generate file path for new picture
            String fileName = "myPicture.jpg";
            String mediafile = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM)
               .getCanonicalPath() + "/mydir/" + fileName;

            // launching new activity to modify picture
            Intent myIntent = new Intent(CameraActivity.this,
                ModificationActivity.class);
            Log.e("le chemin de la photo", "" + mediaFile);
            myIntent.putExtra("imagePath", ""+mediaFile);
            startActivity(myIntent);
        }
    };

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

LinuxでのJavaスレッドのスレッドIDの取得

分類Dev

Clojure:個々のスレッドの管理

分類Dev

iOS7でのコアデータスレッドの管理

分類Dev

別のJavaスレッドでのOutOfMemoryError

分類Dev

Javaのスレッドでの同期

分類Dev

スレッド管理ののNeo4jのJavaドライバ数

分類Dev

Javaスレッド管理

分類Dev

Perlでのマルチスレッド管理

分類Dev

Pythonで複数のスレッドを管理する

分類Dev

C#.NETでのマルチスレッドの管理、操作ごとのスレッド数の制御

分類Dev

Javaで軽量のスレッド?

分類Dev

JavaスレッドでのRejectedExecutionException

分類Dev

Javaでのスレッド分離

分類Dev

Javaでのスレッド間通信

分類Dev

スレッド同期の管理における静的キーワード-Java

分類Dev

Ruby on Rails(Javaスレッドファクトリに相当)で複数のスレッドを管理するにはどうすればよいですか?

分類Dev

Java Spring-同期リクエストのスレッドを管理する

分類Dev

静的メソッドのJavaでのスレッドセーフ

分類Dev

静的メソッドのJavaでのスレッドセーフ

分類Dev

JAVAメソッドでの相互スレッドの除外

分類Dev

DIコンテナ管理インスタンスでのスレッド同期

分類Dev

スレッドJavaの例

分類Dev

Javaスレッドの例?

分類Dev

Javaのスレッド

分類Dev

Javaスレッドの同期

分類Dev

JavaのSwingスレッド

分類Dev

Javaスレッドの例外

分類Dev

Javaのスレッド

分類Dev

libGDXのjavaスレッド