今天小马来讲下在使用相机功能时如果正确的使用相机,因为小马当前用的时候在
网上找了例子,但后来发现有很多相机导入之后就不能用了,我很郁闷的,再后来就
听到群里有人讲到相机什么MediaStore啊什么的,这个类没听过,所以查了下,此
处再多说点东西,大家查东西的时候不用把类所属的哪个包都记得清清楚楚的,还得
在API找半天,如果遇到什么没见过的类,可以直接在Android Developer里面使用
search这个查询框,不明白什么就写什么进去:
![]()
现在,直接开始代码,最后小马会把我做的DEMO贴出来,供大家学习:
- import java.io.ByteArrayOutputStream;
- import java.io.File;
- import android.app.Activity;
- import android.content.Intent;
- import android.graphics.Bitmap;
- import android.net.Uri;
- import android.os.Bundle;
- import android.os.Environment;
- import android.provider.MediaStore;
- import android.view.View;
- import android.view.View.OnClickListener;
- import android.widget.Button;
- import android.widget.Toast;
-
-
-
-
-
-
-
-
- public class CameraTestActivity extends Activity {
-
- private Button btn ;
- private static final String IMAGE_UNSPECIFIED = "image/*";
- String kkk = null;
-
- /** Called when the activity is first created. */
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- btn = (Button)findViewById(R.id.button1);
- btn.setOnClickListener(new OnClickListener() {
-
- @Override
- public void onClick(View v) {
-
-
- Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
-
- intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri
- .fromFile(new File(Environment
- .getExternalStorageDirectory(),
- "mzh.jpg")));
-
-
-
-
- startActivityForResult(intent, 1);
- Toast.makeText(getApplicationContext(), "点击拍照", Toast.LENGTH_LONG).show();
- }
- });
- }
-
-
-
-
-
- @Override
- protected void onActivityResult(int requestCode, int resultCode, Intent data) {
- if (requestCode == 9) {
- Bundle extras = data.getExtras();
- if (extras != null) {
- Bitmap photo = extras.getParcelable("data");
- ByteArrayOutputStream stream = new ByteArrayOutputStream();
-
- photo.compress(Bitmap.CompressFormat.JPEG, 60, stream);
- byte[] b = stream.toByteArray();
-
-
-
- kkk = new String(Base64Coder.encodeLines(b));
- }
-
- }
- if(requestCode == 1){
- File picture = new File(Environment.getExternalStorageDirectory()
- + "/mzh.jpg");
- cutPic(Uri.fromFile(picture));
- }
- super.onActivityResult(requestCode, resultCode, data);
- }
-
- public void cutPic(Uri uri) {
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Intent intent = new Intent("com.android.camera.action.CROP");
- intent.setDataAndType(uri, IMAGE_UNSPECIFIED);
- intent.putExtra("crop", "true");
-
- intent.putExtra("aspectX", 1);
- intent.putExtra("aspectY", 1);
-
- intent.putExtra("outputX", 150);
- intent.putExtra("outputY", 150);
- intent.putExtra("return-data", true);
- startActivityForResult(intent, 9);
- }
-
- }
好了,到目前为止,代码已经贴完了,但有重要的一点,要在刚开始做东西时就应该想清楚自己需要什么东西,有没权限啊SD卡空间啊什么问题的,所以,没权限的不行,报错,所以加上以下权限即可:
- <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
- <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
-
- <uses-permission android:name="android.permission.CAMERA" />
- <uses-feature android:name="android.hardware.camera" />
- <uses-feature android:name="android.hardware.camera.autofocus" />
这些权限网上都有,搜下拍照要什么权限就可以了,如果你觉得没太懂的话,就自己在小马上传的附件里面打断点跟下就知道是怎么走的咯,很简单的DEMO,但在网上找的相机都会有错,所以自己试了下,可以了就贴出来,朋友们有好的方法可以指点小马一下,三人行,必有我师,小马知错就改,吼吼,学习愉快!