• android 开启闪光灯小应用


    该程序需要在AndroidManifest.xml添加权限,属性 android:screenOrientation=”portrait”  

    android.permission.CAMERA   
    android.hardware.camera   

    代码:(待解决问题:开关按钮失效)

    package com.androidhive.flashlight;
     
    import android.app.Activity;
    import android.app.AlertDialog;
    import android.content.DialogInterface;
    import android.content.pm.PackageManager;
    import android.hardware.Camera;
    import android.hardware.Camera.Parameters;
    import android.media.MediaPlayer;
    import android.media.MediaPlayer.OnCompletionListener;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.View;
    import android.widget.ImageButton;
     
    public class MainActivity extends Activity {
     
        ImageButton btnSwitch;
     
        private Camera camera;
        private boolean isFlashOn;
        private boolean hasFlash;
        Parameters params;
        MediaPlayer mp;
     
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
     
            // flash switch button
            btnSwitch = (ImageButton) findViewById(R.id.btnSwitch);
     
         
            // First check if device is supporting flashlight or not        
            hasFlash = getApplicationContext().getPackageManager()
                    .hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH);
     
            if (!hasFlash) {
                // device doesn't support flash
                // Show alert message and close the application
                AlertDialog alert = new AlertDialog.Builder(MainActivity.this)
                        .create();
                alert.setTitle("Error");
                alert.setMessage("Sorry, your device doesn't support flash light!");
                alert.setButton("OK", new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int which) {
                        // closing the application
                        finish();
                    }
                });
                alert.show();
                return;
            }
     
            // get the camera
            getCamera();
             
            // displaying button image
            toggleButtonImage();
             
             
            // Switch button click event to toggle flash on/off
            btnSwitch.setOnClickListener(new View.OnClickListener() {
     
                @Override
                public void onClick(View v) {
                    if (isFlashOn) {
                        // turn off flash
                        turnOffFlash();
                    } else {
                        // turn on flash
                        turnOnFlash();
                    }
                }
            });
        }
     
         
        // Get the camera
        private void getCamera() {
            if (camera == null) {
                try {
                    camera = Camera.open();
                    params = camera.getParameters();
                } catch (RuntimeException e) {
                    Log.e("Camera Error. Failed to Open. Error: ", e.getMessage());
                }
            }
        }
     
         
         // Turning On flash
        private void turnOnFlash() {
            if (!isFlashOn) {
                if (camera == null || params == null) {
                    return;
                }
                // play sound
                playSound();
                 
                params = camera.getParameters();
                params.setFlashMode(Parameters.FLASH_MODE_TORCH);
                camera.setParameters(params);
                camera.startPreview();
                isFlashOn = true;
                 
                // changing button/switch image
                toggleButtonImage();
            }
     
        }
     
     
        // Turning Off flash
        private void turnOffFlash() {
            if (isFlashOn) {
                if (camera == null || params == null) {
                    return;
                }
                // play sound
                playSound();
                 
                params = camera.getParameters();
                params.setFlashMode(Parameters.FLASH_MODE_OFF);
                camera.setParameters(params);
                camera.stopPreview();
                isFlashOn = false;
                 
                // changing button/switch image
                toggleButtonImage();
            }
        }
         
     
         // Playing sound
         // will play button toggle sound on flash on / off
        private void playSound(){
            if(isFlashOn){
                mp = MediaPlayer.create(MainActivity.this, R.raw.light_switch_off);
            }else{
                mp = MediaPlayer.create(MainActivity.this, R.raw.light_switch_on);
            }
            mp.setOnCompletionListener(new OnCompletionListener() {
     
                @Override
                public void onCompletion(MediaPlayer mp) {
                    // TODO Auto-generated method stub
                    mp.release();
                }
            }); 
            mp.start();
        }
         
        /*
         * Toggle switch button images
         * changing image states to on / off
         * */
        private void toggleButtonImage(){
            if(isFlashOn){
                btnSwitch.setImageResource(R.drawable.btn_switch_on);
            }else{
                btnSwitch.setImageResource(R.drawable.btn_switch_off);
            }
        }
     
        @Override
        protected void onDestroy() {
            super.onDestroy();
        }
     
        @Override
        protected void onPause() {
            super.onPause();
             
            // on pause turn off the flash
            turnOffFlash();
        }
     
        @Override
        protected void onRestart() {
            super.onRestart();
        }
     
        @Override
        protected void onResume() {
            super.onResume();
             
            // on resume turn on the flash
            if(hasFlash)
                turnOnFlash();
        }
     
        @Override
        protected void onStart() {
            super.onStart();
             
            // on starting the app get the camera params
            getCamera();
        }
     
        @Override
        protected void onStop() {
            super.onStop();
             
            // on stop release the camera
            if (camera != null) {
                camera.release();
                camera = null;
            }
        }
     
    }
  • 相关阅读:
    使用RestTemplate进行服务调用的几种方式
    springmvc学习指南 之---第32篇 mybatis 嵌套的处理
    springmvc学习指南 之---第31篇 使用墨客进行测试报错
    springmvc学习指南 之---第30篇 异常的全局处理
    Effective Java 阅读笔记--之(一) 建造者模式(Builder)
    使用mybatis-generator.xml 生成PO 对象
    springmvc学习指南 之---第29篇 springmvc 返回json对象, 不想创建类的前提下
    springmvc学习指南 之---第28篇 springmvc的controller 如何解析视图view? 如何解析json,html,jsp?
    springmvc学习指南 之---第27篇 spring如何实现servlet3.0无web.xml 配置servlet对象的
    springmvc学习指南 之---第26篇 在idea中如何debug跟踪到tomcat内部代码
  • 原文地址:https://www.cnblogs.com/aikongmeng/p/3697383.html
Copyright © 2020-2023  润新知