我在我的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] 删除。
我来说两句