use*_*104 9 camera android android-intent
点击
takePic.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
Intent m_intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
imageUri = getImageUri();
m_intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
startActivityForResult(m_intent, REQUEST_IMAGE_CAPTURE);
}
});
Run Code Online (Sandbox Code Playgroud)
结果:
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_IMAGE_CAPTURE
&& resultCode == RESULT_OK) {
Log.d("test1",""+imageUri);
Intent shareIntent = new Intent(this, SharePicForm.class);
shareIntent.putExtra("photo",""+imageUri);
startActivity(shareIntent);
}
}
Run Code Online (Sandbox Code Playgroud)
getImageUri()
private Uri getImageUri(){
Uri m_imgUri = null;
File m_file;
try {
SimpleDateFormat m_sdf = new SimpleDateFormat("yyyyMMdd_HHmmss");
m_curentDateandTime = m_sdf.format(new Date());
m_imagePath = Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator + m_curentDateandTime + ".jpg";
m_file = new File(m_imagePath);
m_imgUri = Uri.fromFile(m_file);
} catch (Exception p_e) {
}
return m_imgUri;
}
Run Code Online (Sandbox Code Playgroud)
我想要实现的是非常简单,调用相机意图并获得结果照片的uri.但似乎不同的设备不一致,在我的设备上它根本不起作用.我试图将路径存储在公共变量上但是当我检索它时,它是null,是否有正式和标准的方法来实现它并且应该在所有设备上工作?另外,有没有办法不提供自定义路径,但从相机意图获取默认的uri路径?
谢谢你的帮助
Ale*_*ohn 10
如果您的设备不尊重cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT,您仍然可以使用
Uri imageUri = data.getData();
Run Code Online (Sandbox Code Playgroud)
在onActivityResult(int requestCode, int resultCode, Intent data).但在大多数情况下,问题在于RAM是有限的,系统会破坏您的活动,为相机应用程序提供足够的内存以实现您的意图.因此,当返回结果时,您的活动字段不会被初始化,您应该遵循Amit的建议并实施onSavedInstance()和onRestoreInstanceState().
首先确保您的目录已创建......
final String dir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES)+ "/Folder/";
File newdir = new File(dir);
newdir.mkdirs();
Run Code Online (Sandbox Code Playgroud)
在按钮上单击调用此函数。
private void capturarFoto() {
String file = dir+DateFormat.format("yyyy-MM-dd_hhmmss", new Date()).toString()+".jpg";
File newfile = new File(file);
try {
newfile.createNewFile();
} catch (IOException e) {}
Uri outputFileUri = Uri.fromFile(newfile);
Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);
startActivityForResult(cameraIntent, TAKE_PHOTO_CODE);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == TAKE_PHOTO_CODE && resultCode == RESULT_OK) {
Log.d("Demo Pic", "Picture is saved");
}
}
Run Code Online (Sandbox Code Playgroud)
确保您在清单中添加权限
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
31043 次 |
| 最近记录: |