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]
コメントを追加