关于Samsung Galaxy Tab的闪关灯问题

一、问题

        有客户的需求,项目的开发才不会循规蹈矩,才会遇到各种各样的问题。不过今天遇到的问题,确实让人摸不到头脑。
        项目需要扫描条码,于是使用了 条码扫描二维码扫描——ZXing android 源码简化中所使用的ZXing,项目进行的很顺利,能够正常的扫描条码,同时能够获得条码相应的信息。由于项目使用环境的原因,客户提出要求要在打开摄像头进行条码扫描的时候同时打开闪光灯,同时要将闪光灯保持常亮状态,而不是在对焦的时候闪烁。这个问题也好解决,编写好代码之后在 联想乐Pad K1 WLAN 16GB能够正常运行,打开摄像头之后能够保持闪光灯的常亮。但是,问题出现了,这段代码在运行到 三星GALAXY Tab P7510的时候闪光灯硬是没有反应,同样的代码,出现这样的问题,是在是让人费解。
        在stackoverflow上看到了很多人都遇到了这样的问题,比较典型的是 How to use camera flash/led as torch on a Samsung Galaxy Tab?得知这是设备的差异性问题造成的。但是出现这样的问题,我们也不能告诉客户,因为设备差异性原因我们的代码无法在指定的 三星GALAXY Tab P7510运行。于是找答案。

二、解决方案

        我们安装了 我查查这个比较流行的条码扫面软件,发现它可以在打开摄像头时同时保持闪光灯的常量,但是其不是一打开摄像头就让闪光灯亮的,是让用户选择是否打开闪关灯,于是乎答案出来了。我们采用同样的解决方案,在打开摄像头之后,让用户选中是否打开闪光灯,这样就可以设置闪光灯的状态,同时可以让其在 三星GALAXY Tab P7510上正常运行。

三、代码

条码扫描二维码扫描——ZXing android 源码简化的基础之上改造,main.xml文件如下:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <SurfaceView
        android:id="@+id/preview_view"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_centerInParent="true"
        android:layout_gravity="center" />

    <com.zijunlin.Zxing.Demo.view.ViewfinderView
        android:id="@+id/viewfinder_view"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:background="@color/transparent" />

    <TextView
        android:id="@+id/txtResult"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="14sp" />

    <Button
        android:id="@+id/magic"
        android:layout_gravity="right|center_vertical"
        android:background="@drawable/ic_flash_off"
        android:layout_width="55dp"
        android:layout_height="55dp"
        android:onClick="click" />

</FrameLayout>
CaptureActivity.java添加代码如下:
int i = 0;
	/**
	 * 根据用户的选择,设定闪光灯的状态
	 * @param v
	 */
	public void click(View v) {

		switch (i % 3) {
		case 0:
			CameraManager.get().setFlashOn("torch");
			magic.setBackgroundResource(R.drawable.ic_flash_troch);
			break;
		case 1:
			CameraManager.get().setFlashOn("on");
			magic.setBackgroundResource(R.drawable.ic_flash_on);
			break;
		case 2:
			CameraManager.get().setFlashOn("off");
			magic.setBackgroundResource(R.drawable.ic_flash_off);
			break;
		}
		i++;

	}
CameraManager添加代码如下:
 public void setFlashOn(String type){
	  Camera.Parameters param = camera.getParameters();
	  param.setFlashMode(type);
	  camera.setParameters(param);
  }

四、效果图

关闭闪光灯状态(默认)


闪光灯常亮状态

闪光灯随对焦闪烁状态

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值