下面是两个大坑:
1、要使用 MediaStore.EXTRA_OUTPUT 方法,传递uri,如果不使用MediaStore.EXTRA_OUTPUT 方式,那么,在onActiveResult里面(不管任何方法)传递过来的照片就是缩略图。
2、要使用FileDir,先创建要给File对象,然后使用Uri.fromFile(fileDir)传递给intent.putExtra,如果直接创建一个uri,那么在onActiveResult里面就是resultCode=0。
后台代码:
public class MainActivity extends AppCompatActivity {
Button button;
ImageView img;
File fileDir;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button = (Button) findViewById(R.id.button);
img = (ImageView) findViewById(R.id.imageView);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
fileDir = new File(Environment.getExternalStorageDirectory() + "/" + System.currentTimeMillis() + ".jpg");
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(fileDir));
startActivityForResult(intent, 1);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == Activity.RESULT_OK) {
img.setImageURI(Uri.fromFile(fileDir));
}
}
}
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.terry.cameratest.MainActivity">
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:text="take a shot" />
<ImageView
android:id="@+id/imageView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_above="@id/button"
android:minHeight="100dp" />
</RelativeLayout>
AndroidManifest.xml里面,就这两项权限。
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
上面这个是最精简的代码,没有一句多余的。Android5.0的系统上面测试通过。
代码下载地址:http://download.csdn.net/detail/ctg168/9499111