栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 移动开发 > Android

Android 通用型手电筒代码

Android 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Android 通用型手电筒代码

前几天这边一个小区断电,黑麻麻的,一只猫闯进寝室,把我吓哭,然后就果断写了个手电筒,下次断电,再来,我要吓死它。

我之前看到很多人都是直接调用闪光灯,其实大部分机型都不支持,我这个是用相机功能来实现的,大部分机型都支持。

MainActivity.class

public class MainActivity extends FragmentActivity {
 
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
 
    if (isFlashSupported()) {
      if (savedInstanceState == null) {
 getSupportFragmentManager().beginTransaction().add(R.id.container, new FlashlightFragment()).commit();
      }
    } else {
      showNoFlashalert();
    }
  }
 
  private void showNoFlashalert() {
    new alertDialog.Builder(this)
 .setMessage(R.string.device_not_support_msg)
 .setIcon(android.R.drawable.ic_dialog_alert).setTitle(R.string.device_not_support_title)
 .setPositiveButton(R.string.ok, new DialogInterface.onClickListener() {
 
   @Override
   public void onClick(DialogInterface dialog, int which) {
     dialog.dismiss();
     finish();
   }
 }).create().show();
  }
 
  private boolean isFlashSupported() {
    PackageManager pm = getPackageManager();
    return pm.hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH);
  }
 
  public static class FlashlightFragment extends Fragment implements SurfaceHolder.Callback {
 
    public FlashlightFragment() { }
 
    ImageButton btnSwitch;
    ImageView bg;
    private boolean isLighOn = false;
 
    private Camera camera;
    Camera.Parameters params;
 
    @Override
    public void onStart() {
      super.onStart();
      SurfaceView preview = (SurfaceView) getView().findViewById(R.id.PREVIEW);
      SurfaceHolder mHolder = preview.getHolder();
      mHolder.addCallback(this);
    }
 
    @Override
    public void onPause() {
      super.onPause();
      turnOffFlash();
    }
 
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
      View view = inflater.inflate(R.layout.fragment_main_activity, container, false);
 
      // flash switch button
      btnSwitch = (ImageButton) view.findViewById(R.id.flashlight_button);
 
      bg = (ImageView) view.findViewById(R.id.flashlight_bg);
 
      // displaying button image
      toggleBgImage();
 
      // Switch button click event to toggle flash on/off
      btnSwitch.setonClickListener(new View.onClickListener() {
 
 @Override
 public void onClick(View v) {
   if (isLighOn) {
     turnOffFlash();
   } else {
     turnonFlash();
   }
 }
      });
 
      return view;
    }
 
    // Turning On flash
    private void turnonFlash() {
 
      if (!isLighOn) {
 if (camera == null || params == null) {
   return;
 }
 params = camera.getParameters();
 params.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);
 camera.setParameters(params);
 camera.startPreview();
 isLighOn = true;
 
 toggleBgImage();
      }
 
    }
 
    // Turning Off flash
    private void turnOffFlash() {
 
      if (isLighOn) {
 if (camera == null || params == null) {
   return;
 }
 
 params = camera.getParameters();
 params.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);
 camera.setParameters(params);
 camera.stopPreview();
 isLighOn = false;
 
 toggleBgImage();
      }
    }
 
    private void toggleBgImage() {
      if (isLighOn) {
 bg.setImageResource(R.mipmap.f_on);
      } else {
 bg.setImageResource(R.mipmap.f_off);
      }
    }
 
    @Override
    public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
 
    }
 
    @Override
    public void surfaceDestroyed(SurfaceHolder holder) {
      if (camera != null) {
 camera.stopPreview();
 camera.setPreviewCallback(null);
 camera.release();
 camera = null;
      }
    }
 
    @Override
    public void surfaceCreated(SurfaceHolder holder) {
      if (camera == null) {
 camera = Camera.open();
 params = camera.getParameters();
 try {
   camera.setPreviewDisplay(holder);
 } catch (IOException e) {
   camera.release();
   camera = null;
 }
      }
 
      turnonFlash();
    }
 
  }
 
 
}

fragment_main_activity.xml


 
  
 
  
 
  
 


activity_main.xml



AndroidManifest.xml



 
  
  
 
  
  
 
  
    
      
 
 
 
      
    
  
 

以上所述就是本文的全部内容了,希望大家能够喜欢。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/164338.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号