码迷,mamicode.com
首页 > 其他好文 > 详细

19、照相机技术

时间:2014-07-26 14:44:31      阅读:236      评论:0      收藏:0      [点我收藏+]

标签:android   style   blog   http   color   os   strong   io   

照相机有哪些功能

     Android SDK支持操作Android设备内置的照相机。从Android2.3开始,支持操作多个摄像头(主要指前置摄像头和后置照相机)。通过照相机可以拍照和录像。

编写拍照程序需要考虑哪些方面
是否支持照相机
 
快速拍照和定制拍照
 
存储
照相机涉及到的主要API
Camera

SurfaceView、

MediaRecorder
Intent
拍照和摄像程序可能涉及到的权限和特性

<uses-permission android:name="android.permission.CAMERA" />

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

<uses-permission android:name="android.permission.RECORD_AUDIO" />

<uses-feature android:name="android.hardware.camera" />

DEMO1
拍照Demo
 1 <?xml version="1.0" encoding="utf-8"?>
 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     android:layout_width="fill_parent"
 4     android:layout_height="fill_parent"
 5     android:orientation="vertical" >
 6 
 7     <Button
 8         android:id="@+id/btnTakePicture"
 9         android:layout_width="wrap_content"
10         android:layout_height="wrap_content"
11         android:text="拍照" />
12 
13     <ImageView
14         android:id="@+id/imageview"
15         android:layout_width="320dp"
16         android:layout_height="240dp" />
17 
18 </LinearLayout>
 1 import android.app.Activity;
 2 import android.content.Intent;
 3 import android.graphics.Bitmap;
 4 import android.os.Bundle;
 5 import android.provider.MediaStore;
 6 import android.view.View;
 7 import android.view.View.OnClickListener;
 8 import android.widget.Button;
 9 import android.widget.ImageView;
10 
11 public class Main extends Activity implements OnClickListener {
12     private ImageView imageView;
13 
14     @Override
15     public void onCreate(Bundle savedInstanceState) {
16         super.onCreate(savedInstanceState);
17         setContentView(R.layout.main);
18 
19         Button btnTakePicture = (Button) findViewById(R.id.btnTakePicture);
20         btnTakePicture.setOnClickListener(this);
21 
22         imageView = (ImageView) findViewById(R.id.imageview);
23     }
24 
25     public void onClick(View view) {
26         // 调用系统拍照
27         Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
28         // 显示拍照窗口
29         startActivityForResult(intent, 1);
30     }
31     
32     protected void onActivityResult(int requestCode, int resultCode, Intent data) {
33         if (requestCode == 1) {
34             if (resultCode == Activity.RESULT_OK) {
35                 Bitmap cameraBitmap = (Bitmap) data.getExtras().get("data");
36                 imageView.setImageBitmap(cameraBitmap);
37             }
38         }
39     }
40 
41 }
 1 <?xml version="1.0" encoding="utf-8"?>
 2 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
 3     package="cn.eoe.system.camera" android:versionCode="1"
 4     android:versionName="1.0">
 5     <application android:icon="@drawable/icon" android:label="@string/app_name">
 6         <activity android:name=".Main" android:label="@string/app_name">
 7             <intent-filter>
 8                   <action android:name="android.intent.action.MAIN" />
 9                 <category android:name="android.intent.category.LAUNCHER" />
10             </intent-filter>
11         </activity>    
12     </application>
13     <uses-sdk android:minSdkVersion="7" />
14 </manifest> 

 

录像Demo
 1 <?xml version="1.0" encoding="utf-8"?>
 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     android:layout_width="fill_parent"
 4     android:layout_height="fill_parent"
 5     android:orientation="vertical" >
 6 
 7     <Button
 8         android:id="@+id/btnTakePicture"
 9         android:layout_width="wrap_content"
10         android:layout_height="wrap_content"
11         android:text="录像" />
12 
13     <VideoView
14         android:id="@+id/videoview"
15         android:layout_width="wrap_content"
16         android:layout_height="wrap_content" />
17 
18 </LinearLayout>
 1 import android.app.Activity;
 2 import android.content.Intent;
 3 import android.database.Cursor;
 4 import android.net.Uri;
 5 import android.os.Bundle;
 6 import android.provider.MediaStore;
 7 import android.view.View;
 8 import android.view.View.OnClickListener;
 9 import android.widget.Button;
10 import android.widget.MediaController;
11 import android.widget.VideoView;
12 
13 public class Main extends Activity implements OnClickListener {
14     public VideoView videoView;
15 
16     @Override
17     public void onCreate(Bundle savedInstanceState) {
18         super.onCreate(savedInstanceState);
19         setContentView(R.layout.main);
20         Button btnTakePicture = (Button) findViewById(R.id.btnTakePicture);
21         btnTakePicture.setOnClickListener(this);
22 
23         videoView = (VideoView) findViewById(R.id.videoview);
24 
25     }
26     
27     public void onClick(View view) {
28         Intent intent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
29         startActivityForResult(intent, 1);
30     }
31 
32     protected void onActivityResult(int requestCode, int resultCode, Intent data) {
33         if (requestCode == 1) {
34             if (resultCode == Activity.RESULT_OK) {
35                 Uri uri = data.getData();
36                 Cursor cursor = this.getContentResolver().query(uri, null,
37                         null, null, null);
38 
39                 if (cursor.moveToFirst()) {
40                     // 取出路径
41                     String videoPath = cursor.getString(cursor
42                             .getColumnIndex("_data"));
43                     // 加载
44                     videoView.setVideoURI(Uri.parse(videoPath));
45                     // 设置视频控制控件(停止,快进等)。
46                     videoView.setMediaController(new MediaController(this));
47                     // 播放。
48                     videoView.start();
49                 }
50             }
51         }
52     }
53 
54 }
 1 <?xml version="1.0" encoding="utf-8"?>
 2 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
 3     package="cn.eoe.record.video" android:versionCode="1"
 4     android:versionName="1.0">
 5     <application android:icon="@drawable/icon" android:label="@string/app_name">
 6         <activity android:name="Main" android:label="@string/app_name">
 7             <intent-filter>
 8                   <action android:name="android.intent.action.MAIN" />
 9                 <category android:name="android.intent.category.LAUNCHER" />
10             </intent-filter>
11         </activity>    
12     </application>
13     <uses-sdk android:minSdkVersion="7" />
14 </manifest> 

 

 
定制拍照程序的步骤
打开照相机:Camera.open
 
创建SurfaceView对象
 
添加回调事件监听器(SurfaceHolder.addCallback)
 
预览(Camera.startPreview)
 
拍照(Camera.takePicture)
检测Android设备是否支持照相机

private boolean checkCameraHardware(Context context) {

    if (context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA))

    {  return true; }  else  {   return false; }

}

DEMO2
 

 

 

 

 

 

19、照相机技术,布布扣,bubuko.com

19、照相机技术

标签:android   style   blog   http   color   os   strong   io   

原文地址:http://www.cnblogs.com/androidsj/p/3869892.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!