最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

android實(shí)現(xiàn)定時(shí)拍照功能

 更新時(shí)間:2018年05月29日 13:54:03   作者:yhcelebrite  
這篇文章主要為大家詳細(xì)介紹了android實(shí)現(xiàn)定時(shí)拍照功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

在手機(jī)上面實(shí)現(xiàn),設(shè)置一段時(shí)間(以秒計(jì)時(shí))之后,自動(dòng)拍照,適用于攝影師建立一個(gè)場(chǎng)景,之后設(shè)置時(shí)間,再進(jìn)入場(chǎng)景。

界面主要就是一個(gè)設(shè)置時(shí)間的EditText和啟動(dòng)倒計(jì)時(shí)的Button,設(shè)置完時(shí)間之后,點(diǎn)擊倒計(jì)時(shí)按鈕。

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
  android:id="@+id/frameLayout" 
  android:layout_width="fill_parent" 
  android:layout_height="fill_parent" > 
 
  <SurfaceView 
    android:id="@+id/imageView" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" /> 
 
  <LinearLayout 
    android:id="@+id/lineLayout" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" > 
 
    <Button 
      android:id="@+id/startBtn" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="@string/startTimer"  
      android:layout_gravity="center_horizontal"/> 
     
<!--     <TextView --> 
<!--       android:id="@+id/countDowntextView" --> 
<!--       android:layout_width="fill_parent" --> 
<!--       android:layout_height="fill_parent" --> 
<!--       android:layout_gravity="center_horizontal|center_vertical|center" --> 
<!--       android:gravity="center_horizontal|center_vertical" --> 
<!--       android:text="@string/conutTime" --> 
<!--       android:textSize="40sp" /> --> 
     
    <EditText 
      android:id="@+id/countDownEditTextView" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:layout_gravity="center_horizontal|center_vertical|center" 
      android:gravity="center_horizontal|center_vertical" 
      android:text="@string/conutTime" 
      android:textSize="80sp"  
      android:inputType="number"/> 
 
     
  </LinearLayout> 
 
</FrameLayout> 

在清單文件中加入權(quán)限:

<uses-permission android:name="android.permission.CAMERA" /> 
<!--下面的可不需要--> 
<uses-feature android:name="android.hardware.camera" /> 
<uses-feature android:name="android.hardware.camera.autofocus" /> 

主程序:

package cn.yh.cameradelaycontroll; 
 
import java.io.OutputStream; 
import java.util.Iterator; 
import java.util.List; 
 
import android.app.Activity; 
import android.content.ContentValues; 
import android.content.res.Configuration; 
import android.hardware.Camera; 
import android.hardware.Camera.PictureCallback; 
import android.net.Uri; 
import android.os.Bundle; 
import android.os.Handler; 
import android.provider.MediaStore.Images.Media; 
import android.text.Editable; 
import android.text.TextWatcher; 
import android.util.Log; 
import android.view.Menu; 
import android.view.SurfaceHolder; 
import android.view.SurfaceView; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.TextView; 
import android.widget.Toast; 
 
public class MainActivity extends Activity implements SurfaceHolder.Callback, 
    OnClickListener, PictureCallback { 
 
  private static final String CAMERA_CONTROLL = "CAMERA_CONTROLL"; 
  private SurfaceView imageSView; 
  private Button startButton; 
  // private TextView countDownTextView; 
  private EditText countDownEditTextView; 
  private Camera camera; 
  private SurfaceHolder surfaceHolder; 
  private Handler timerUpdateHandler; 
  private boolean timerRunning = false; 
  private int currentTimer = 10; 
 
  @Override 
  protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    imageSView = (SurfaceView) findViewById(R.id.imageView); 
    startButton = (Button) findViewById(R.id.startBtn); 
    // countDownTextView = (TextView) findViewById(R.id.countDowntextView); 
    countDownEditTextView = (EditText) findViewById(R.id.countDownEditTextView); 
    /* 
    countDownEditTextView.addTextChangedListener(new TextWatcher() { 
 
      @Override 
      public void onTextChanged(CharSequence s, int start, int before, 
          int count) { 
        // TODO Auto-generated method stub 
      } 
 
      @Override 
      public void beforeTextChanged(CharSequence arg0, int arg1, 
          int arg2, int arg3) { 
        // TODO Auto-generated method stub 
 
      } 
 
      @Override 
      public void afterTextChanged(Editable arg0) { 
        // TODO Auto-generated method stub 
        currentTimer = Integer.parseInt(countDownEditTextView.getText().toString()); 
      } 
    }); 
    */ 
    surfaceHolder = imageSView.getHolder(); 
 
    surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); 
 
    surfaceHolder.addCallback(this); 
 
    startButton.setOnClickListener(this); 
 
    timerUpdateHandler = new Handler(); 
  } 
 
  @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 void onPictureTaken(byte[] data, Camera camera) { 
    // TODO Auto-generated method stub 
    Uri imageFileUri = getContentResolver().insert( 
        Media.EXTERNAL_CONTENT_URI, new ContentValues()); 
    try { 
      OutputStream imageFileOS = getContentResolver().openOutputStream( 
          imageFileUri); 
      imageFileOS.write(data); 
      imageFileOS.flush(); 
      imageFileOS.close(); 
    } catch (Exception e) { 
      // TODO Auto-generated catch block 
      Toast.makeText(this, e.getMessage(), Toast.LENGTH_LONG).show(); 
    } 
    camera.startPreview(); 
  } 
 
  @Override 
  public void onClick(View v) { 
    // TODO Auto-generated method stub 
    currentTimer = Integer.parseInt(countDownEditTextView.getText().toString()); 
    switch (v.getId()) { 
    case R.id.startBtn: 
      if (!timerRunning) { 
        timerRunning = true; 
        timerUpdateHandler.post(timerUpdateTask); 
      } 
      break; 
    } 
  } 
 
  private Runnable timerUpdateTask = new Runnable() { 
 
    @Override 
    public void run() { 
      // TODO Auto-generated method stub 
      if (currentTimer > 1) { 
        currentTimer--; 
        timerUpdateHandler.postDelayed(timerUpdateTask, 1000); 
      } else { 
        camera.takePicture(null, null, null, MainActivity.this); 
        timerRunning = false; 
        currentTimer = 10; 
      } 
      countDownEditTextView.setText(currentTimer + ""); 
    } 
  }; 
 
  @Override 
  public void surfaceChanged(SurfaceHolder holder, int format, int width, 
      int height) { 
    // TODO Auto-generated method stub 
    camera.startPreview(); 
  } 
 
  @Override 
  public void surfaceCreated(SurfaceHolder holder) { 
    // TODO Auto-generated method stub 
    int cameraNums = Camera.getNumberOfCameras(); 
    Log.e(CAMERA_CONTROLL, cameraNums + ""); 
    try { 
      camera = Camera.open(cameraNums - 1); 
    } catch (Exception e) { 
      Log.e(CAMERA_CONTROLL, e.getMessage()); 
    } 
    try { 
      camera.setPreviewDisplay(holder); 
      Camera.Parameters parameters = camera.getParameters(); 
      if (this.getResources().getConfiguration().orientation != Configuration.ORIENTATION_LANDSCAPE) { 
        parameters.set("orientation", "portrait"); 
        camera.setDisplayOrientation(90); 
        parameters.setRotation(90); 
      } 
      List<String> colorEffects = parameters.getSupportedColorEffects(); 
      Iterator<String> cei = colorEffects.iterator(); 
      while (cei.hasNext()) { 
        String currentEffect = cei.next(); 
        if (currentEffect.equals(Camera.Parameters.EFFECT_SOLARIZE)) { 
          parameters 
              .setColorEffect(Camera.Parameters.EFFECT_SOLARIZE); 
          break; 
        } 
      } 
      camera.setParameters(parameters); 
    } catch (Exception e) { 
      // TODO Auto-generated catch block 
      // e.printStackTrace(); 
      camera.release(); 
    } 
  } 
 
  @Override 
  public void surfaceDestroyed(SurfaceHolder holder) { 
    // TODO Auto-generated method stub 
    camera.stopPreview(); 
    camera.release(); 
  } 
 
} 

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Flutter開發(fā)中的路由參數(shù)處理

    Flutter開發(fā)中的路由參數(shù)處理

    在實(shí)際開發(fā)中,我們經(jīng)常會(huì)需要在頁(yè)面跳轉(zhuǎn)的時(shí)候攜帶路由參數(shù),典型的例子就是從列表到詳情頁(yè)的時(shí)候,需要攜帶詳情的 id,以便詳情頁(yè)獲取對(duì)應(yīng)的數(shù)據(jù)。同時(shí),有些時(shí)候還需要返回時(shí)攜帶參數(shù)返回上一級(jí),以便上級(jí)頁(yè)面根據(jù)返回結(jié)果更新。本篇將介紹這兩種情形的實(shí)現(xiàn)。
    2021-06-06
  • Android中ListView的item點(diǎn)擊沒(méi)有反應(yīng)的解決方法

    Android中ListView的item點(diǎn)擊沒(méi)有反應(yīng)的解決方法

    這篇文章主要介紹了Android中ListView的item點(diǎn)擊沒(méi)有反應(yīng)的相關(guān)資料,需要的朋友可以參考下
    2017-10-10
  • Android編程實(shí)現(xiàn)獲取新浪天氣預(yù)報(bào)數(shù)據(jù)的方法

    Android編程實(shí)現(xiàn)獲取新浪天氣預(yù)報(bào)數(shù)據(jù)的方法

    這篇文章主要介紹了Android編程實(shí)現(xiàn)獲取新浪天氣預(yù)報(bào)數(shù)據(jù)的方法,涉及Android基于新浪接口的調(diào)用及數(shù)據(jù)處理技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-11-11
  • Android中ImageView使用網(wǎng)絡(luò)圖片資源的方法

    Android中ImageView使用網(wǎng)絡(luò)圖片資源的方法

    這篇文章主要介紹了Android中ImageView使用網(wǎng)絡(luò)圖片資源的方法,較為詳細(xì)的分析了ImageView調(diào)用網(wǎng)絡(luò)圖片的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-10-10
  • Android自定義UI之粒子效果

    Android自定義UI之粒子效果

    這篇文章主要為大家詳細(xì)介紹了Android自定義UI之粒子效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-10-10
  • Android TabWidget底部顯示效果

    Android TabWidget底部顯示效果

    這篇文章主要為大家詳細(xì)介紹了Android TabWidget底部顯示效果的三種方式,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • Android開發(fā)中解析xml文件XmlUtils工具類與用法示例

    Android開發(fā)中解析xml文件XmlUtils工具類與用法示例

    這篇文章主要介紹了Android開發(fā)中解析xml文件XmlUtils工具類與用法,結(jié)合實(shí)例形式分析了Android開發(fā)中解析xml文件工具類定義與相關(guān)使用技巧,需要的朋友可以參考下
    2018-01-01
  • Android自定義控件實(shí)現(xiàn)雷達(dá)圖效果

    Android自定義控件實(shí)現(xiàn)雷達(dá)圖效果

    這篇文章主要為大家詳細(xì)介紹了Android自定義控件實(shí)現(xiàn)雷達(dá)圖效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-09-09
  • Android實(shí)現(xiàn)擲骰子效果

    Android實(shí)現(xiàn)擲骰子效果

    這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)擲骰子效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-05-05
  • Android 仿京東商城底部布局的選擇效果(Selector 選擇器的實(shí)現(xiàn))

    Android 仿京東商城底部布局的選擇效果(Selector 選擇器的實(shí)現(xiàn))

    這篇文章主要介紹了Android 仿京東商城底部布局的選擇效果(Selector 選擇器的實(shí)現(xiàn)),需要的朋友可以參考下
    2017-04-04

最新評(píng)論

阿城市| 弥勒县| 甘泉县| 抚远县| 湘潭市| 尉犁县| 楚雄市| 东山县| 崇信县| 象山县| 得荣县| 阿瓦提县| 伽师县| 青川县| 大厂| 东辽县| 乳山市| 孟村| 惠水县| 特克斯县| 邵武市| 四平市| 蛟河市| 昌江| 永胜县| 泰安市| 大田县| 阿拉善盟| 静宁县| 安岳县| 广德县| 蓝田县| 古田县| 吉安县| 合水县| 祥云县| 黄骅市| 宣恩县| 太仆寺旗| 山丹县| 太仆寺旗|