亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Android實現手機拍照功能

 更新時間:2015年12月11日 14:39:07   作者:徐劉根  
這篇文章主要介紹了Android實現手機拍照功能,感興趣的小伙伴們可以參考一下

本文實例為大家講解如何輕松實現Android手機拍照功能,分享給大家供大家參考。具體如下:

一、布局文件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();// 開始預覽
      } 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);
  }
}

三、添加權限

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

效果如下:

希望本文所述對大家學習Android軟件編程有所幫助。

相關文章

  • android同時控制EditText輸入字符個數和禁止特殊字符輸入的方法

    android同時控制EditText輸入字符個數和禁止特殊字符輸入的方法

    這篇文章主要介紹了android同時控制EditText輸入字符個數和禁止特殊字符輸入的方法,涉及Android操作EditText控制字符操作的技巧,需要的朋友可以參考下
    2015-04-04
  • Android Handler使用案例詳解

    Android Handler使用案例詳解

    這篇文章主要介紹了Android Handler使用案例詳解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下
    2021-08-08
  • 淺談Android添加快捷方式ShortCut

    淺談Android添加快捷方式ShortCut

    這篇文章主要介紹了淺談Android添加快捷方式ShortCut,對添加快捷方式感興趣的同學,可以參考下
    2021-04-04
  • Android如何幫助用戶自動接聽或者掛斷來電

    Android如何幫助用戶自動接聽或者掛斷來電

    這篇文章主要為大家詳細介紹了Android幫助用戶自動接聽或者掛斷來電,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • Android仿微信QQ設置圖形頭像裁剪功能

    Android仿微信QQ設置圖形頭像裁剪功能

    最近在做畢業(yè)設計,想有一個功能和QQ一樣可以裁剪頭像并設置圓形頭像.圖片裁剪實現方式有兩種,一種是利用系統(tǒng)自帶的裁剪工具,一種是使用開源工具Cropper。本節(jié)就為大家?guī)砣绾问褂孟到y(tǒng)自帶的裁剪工具進行圖片裁剪
    2016-10-10
  • Android 實現自定義圓形進度條的功能

    Android 實現自定義圓形進度條的功能

    這篇文章主要介紹了Android 實現自定義圓形進度條的功能的相關資料,開發(fā)Android應用的朋友肯定對自定義View不陌生,很多都有重新寫的,這里就對實現圓形進度條介紹下,需要的朋友可以參考下
    2016-11-11
  • Android實現支付寶支付密碼輸入界面

    Android實現支付寶支付密碼輸入界面

    這篇文章主要為大家詳細介紹了Android實現支付寶支付密碼輸入界面,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • Android實現點擊兩次BACK鍵退出應用

    Android實現點擊兩次BACK鍵退出應用

    這篇文章主要為大家詳細介紹了Android實現點擊兩次BACK鍵退出應用的相關資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • Android平臺下輕量級http網絡傳輸庫

    Android平臺下輕量級http網絡傳輸庫

    這篇文章主要介紹了Android平臺下輕量級http網絡傳輸庫的相關資料,需要的朋友可以參考下
    2016-01-01
  • 解析:android 如何從JPEG生成BufferedImage

    解析:android 如何從JPEG生成BufferedImage

    本篇文章是對在android中,如何從JPEG生成BufferedImage的解決方法進行了詳細的分析介紹,需要的朋友參考下
    2013-06-06

最新評論