main.xml

<LinearLayout 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:orientation="vertical"    tools:context="com.mytest.testcamera.MainActivity" >    <SurfaceView        android:id="@+id/sf_camera"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:layout_weight="1" />    <Button        android:id="@+id/btn_camera"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="照相" /></LinearLayout>
View Code

AndroidMainfest.xml

<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"    package="com.mytest.testcamera"    android:versionCode="1"    android:versionName="1.0" >    <uses-sdk        android:minSdkVersion="14"        android:targetSdkVersion="21" />    <application        android:allowBackup="true"        android:icon="@drawable/ic_launcher"        android:label="@string/app_name"        android:theme="@style/AppTheme" >        <activity            android:name=".MainActivity"            android:label="@string/app_name"            android:screenOrientation="portrait"            android:theme="@android:style/Theme.Black.NoTitleBar" >            <intent-filter>                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>        </activity>        <activity android:name=".PictureActivity" >        </activity>    </application>    <uses-permission android:name="android.permission.CAMERA" />    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /></manifest>
View Code

MainActivity

package com.mytest.testcamera;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import android.app.Activity;import android.content.Intent;import android.hardware.Camera;import android.os.Bundle;import android.util.Log;import android.view.Menu;import android.view.MenuItem;import android.view.SurfaceHolder;import android.view.SurfaceHolder.Callback;import android.widget.Button;import android.widget.Toast;import android.view.SurfaceView;import android.view.View;public class MainActivity extends Activity {    private SurfaceView cameraPreview;    private Button btnCamera;    private Camera camera = null;    private Callback camerPreCallBack = new Callback() {        @Override        public void surfaceCreated(SurfaceHolder holder) {            // 加载照相预览            startPreview();        }        @Override        public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {        }        @Override        public void surfaceDestroyed(SurfaceHolder holder) {            // 停止照相预览            stopPreview();        }    };    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        cameraPreview = (SurfaceView) findViewById(R.id.sf_camera);        cameraPreview.getHolder().addCallback(camerPreCallBack);        btnCamera = (Button) findViewById(R.id.btn_camera);        btnCamera.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                // 拍照                camera.takePicture(null, null, new Camera.PictureCallback() {                    @Override                    public void onPictureTaken(byte[] data, Camera camera) {                        // 把图片数据保存到临时目录                        String path = savePictureFile(data);                        Log.v("info", "image temp path:" + path);                        if (path != null) {                            Intent intent = new Intent(MainActivity.this, PictureActivity.class);                            intent.putExtra("imgPath", path);                            startActivity(intent);                        } else {                            Toast.makeText(MainActivity.this, "保存照片失败", Toast.LENGTH_SHORT).show();                        }                    }                });            }        });    }    /**     * 保存照片到临时目录     *      * @param bytes     * @return     */    private String savePictureFile(byte[] bytes) {        try {            File file = File.createTempFile("camera", "img");            FileOutputStream fos = new FileOutputStream(file);            fos.write(bytes);            fos.flush();            fos.close();            return file.getAbsolutePath();        } catch (IOException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }        return null;    }    private void startPreview() {        camera = Camera.open();        try {            camera.setPreviewDisplay(cameraPreview.getHolder());            camera.startPreview();        } catch (IOException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }    }    private void stopPreview() {        camera.stopPreview();        camera.release();    }    @Override    public boolean onCreateOptionsMenu(Menu menu) {        // Inflate the menu; this adds items to the action bar if it is present.        getMenuInflater().inflate(R.menu.main, menu);        return true;    }    @Override    public boolean onOptionsItemSelected(MenuItem item) {        // Handle action bar item clicks here. The action bar will        // automatically handle clicks on the Home/Up button, so long        // as you specify a parent activity in AndroidManifest.xml.        int id = item.getItemId();        if (id == R.id.action_settings) {            return true;        }        return super.onOptionsItemSelected(item);    }}
View Code

预览PictureActivity.java

package com.mytest.testcamera;import android.app.Activity;import android.net.Uri;import android.os.Bundle;import android.widget.ImageView;public class PictureActivity extends Activity {    private ImageView imageView;            @Override    protected void onCreate(Bundle savedInstanceState) {        // TODO Auto-generated method stub        super.onCreate(savedInstanceState);                imageView = new ImageView(this);        setContentView(imageView);                String path = getIntent().getStringExtra("imgPath");        if(path!=null){            imageView.setImageURI(Uri.parse(path));        }        }}
View Code

更多相关文章

  1. android 2.2 apidemos 赏析笔记 2
  2. Android相机Camera基础知识
  3. 【Android】使用MediaCodec硬编码实现视频直播推流端(一)
  4. 【Android】使用MediaCodec硬编码实现视频直播推流端(一)
  5. 【Android】使用MediaCodec硬编码实现视频直播推流端(一)
  6. Android日记抓取并保存
  7. 浅析Android手机卫士保存手机安全号码
  8. Android(安卓)Wear开发者预览配置过程
  9. android布局属性预览

随机推荐

  1. Android(安卓)NeedProxy
  2. Flutter Weekly Issue 61
  3. Install Android(安卓)NDK No.1
  4. android GridView条目点击变色
  5. 设置网络首选项
  6. Android软件加安全码
  7. android 加载recyclerView的popupWindow
  8. android:打开第三方数据库
  9. Android(安卓)AsyncTask 分析
  10. Android_Animation