我在我的 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();
}
当我开始我的 Intent 时,我的变量始终为 null,因为第一个线程尚未完成。
希望你能帮助我:D
提前感谢大家
这是日志:
11-05 14:29:59.936 18216-18216/com.mcm.citadium I/Choreographer﹕ Skipped 72 frames! The application may be doing too much work on its main thread. 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
- 无论如何它都会在另一个线程中处理其工作(请参阅documentation)。
因此,例如,您可以在按钮 onClick
处理程序中触发拍照 Activity :
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);
}
};
关于java - Java中的线程管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19789741/