国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 系統(tǒng) > Android > 正文

Android實(shí)現(xiàn)手機(jī)拍照功能

2020-04-11 11:12:17
字體:
供稿:網(wǎng)友

本文實(shí)例為大家講解如何輕松實(shí)現(xiàn)Android手機(jī)拍照功能,分享給大家供大家參考。具體如下:

一、布局文件main.xml

<?xml version="1.0" encoding="utf-8"?><FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"  android:layout_width="fill_parent"  android:layout_height="fill_parent" >  <SurfaceView    android:id="@+id/surfaceView"    android:layout_width="fill_parent"    android:layout_height="fill_parent" />  <RelativeLayout    android:id="@+id/buttonlayout"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:visibility="gone" >    <Button      android:id="@+id/takepicture"      android:layout_width="wrap_content"      android:layout_height="wrap_content"      android:layout_alignParentBottom="true"      android:layout_alignParentRight="true"      android:layout_marginRight="5dp"      android:onClick="takepicture"      android:text="@string/takepicture" />    <Button      android:id="@+id/autofocus"      android:layout_width="wrap_content"      android:layout_height="wrap_content"      android:layout_alignTop="@id/takepicture"      android:layout_marginRight="20dp"      android:layout_toLeftOf="@id/takepicture"      android:onClick="takepicture"      android:text="@string/autofocus" />  </RelativeLayout></FrameLayout>

二、MainActivity.java

import java.io.File;import java.io.FileOutputStream;import android.app.Activity;import android.hardware.Camera;import android.hardware.Camera.PictureCallback;import android.os.Bundle;import android.os.Environment;import android.view.MotionEvent;import android.view.SurfaceHolder;import android.view.SurfaceHolder.Callback;import android.view.SurfaceView;import android.view.View;import android.view.ViewGroup;import android.view.Window;import android.view.WindowManager;public class MainActivity extends Activity {  private View layout;  private Camera camera;  @Override  public void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    requestWindowFeature(Window.FEATURE_NO_TITLE);    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,        WindowManager.LayoutParams.FLAG_FULLSCREEN);    setContentView(R.layout.main);    layout = this.findViewById(R.id.buttonlayout);    SurfaceView surfaceView = (SurfaceView) this        .findViewById(R.id.surfaceView);    surfaceView.getHolder()        .setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);    surfaceView.getHolder().setFixedSize(176, 144);    surfaceView.getHolder().setKeepScreenOn(true);    surfaceView.getHolder().addCallback(new SurfaceCallback());  }  public void takepicture(View v) {    if (camera != null) {      switch (v.getId()) {      case R.id.takepicture:        camera.takePicture(null, null, new MyPictureCallback());        break;      case R.id.autofocus:        camera.autoFocus(null);        break;      }    }  }  private final class MyPictureCallback implements PictureCallback {    public void onPictureTaken(byte[] data, Camera camera) {      try {        File jpgFile = new File(            Environment.getExternalStorageDirectory(),            System.currentTimeMillis() + ".jpg");        FileOutputStream outStream = new FileOutputStream(jpgFile);        outStream.write(data);        outStream.close();        camera.startPreview();      } catch (Exception e) {        e.printStackTrace();      }    }  }  private final class SurfaceCallback implements Callback {    public void surfaceCreated(SurfaceHolder holder) {      try {        camera = Camera.open();// 打開攝像頭        Camera.Parameters parameters = camera.getParameters();        // Log.i("MainActivity", parameters.flatten());        parameters.setPreviewSize(800, 480);        parameters.setPreviewFrameRate(5);        parameters.setPictureSize(1024, 768);        parameters.setJpegQuality(80);        camera.setParameters(parameters);        camera.setPreviewDisplay(holder);        camera.startPreview();// 開始預(yù)覽      } catch (Exception e) {        e.printStackTrace();      }    }    public void surfaceChanged(SurfaceHolder holder, int format, int width,        int height) {    }    public void surfaceDestroyed(SurfaceHolder holder) {      if (camera != null) {        camera.release();        camera = null;      }    }  }  @Override  public boolean onTouchEvent(MotionEvent event) {    if (event.getAction() == MotionEvent.ACTION_DOWN) {      layout.setVisibility(ViewGroup.VISIBLE);      return true;    }    return super.onTouchEvent(event);  }}

三、添加權(quán)限

 <uses-permission android:name="android.permission.CAMERA" />  <!-- 在SDCard中創(chuàng)建與刪除文件權(quán)限 -->  <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />  <!-- 往SDCard寫入數(shù)據(jù)權(quán)限 -->  <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

效果如下:

希望本文所述對(duì)大家學(xué)習(xí)Android軟件編程有所幫助。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 都兰县| 济源市| 瑞昌市| 海阳市| 临沂市| 台南市| 宁武县| 龙里县| 鹿泉市| 马公市| 乌审旗| 蒙自县| 恩施市| 土默特右旗| 兴海县| 莎车县| 开平市| 芦溪县| 潮安县| 南木林县| 内江市| 化州市| 策勒县| 穆棱市| 兴城市| 水富县| 靖宇县| 临西县| 大宁县| 安宁市| 德清县| 原平市| 蛟河市| 阿克陶县| 油尖旺区| 内江市| 大渡口区| 乌拉特后旗| 黄平县| 织金县| 洪洞县|