zoukankan      html  css  js  c++  java
  • 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;
            }
        }
     
    }
  • 相关阅读:
    桥梁模式
    OpenGL中的功能与OSG对应功能 (摘)
    STL源码学习----lower_bound和upper_bound算法[转]
    [转载]GMT地形数据总结
    关于OPenGL和OSG的矩阵 (转)
    GEOS库 介绍 (转)
    一个小巧的C++Log输出到文件类 (转)
    如何优化,让电脑真正快起来(转)
    数据库的应用——直接从内存中读取osg节点 (转)
    OSG 实现跟随节点的相机(转)
  • 原文地址:https://www.cnblogs.com/aikongmeng/p/3697383.html
Copyright © 2011-2022 走看看