2022年android条码照相 .pdf





《2022年android条码照相 .pdf》由会员分享,可在线阅读,更多相关《2022年android条码照相 .pdf(30页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、关于 Zxing 二维码扫描开灯的问题复制链接 最近看了一款我查查 ” 的应用,举个他的那个扫描界面做的蛮好的,还有一个开灯的效果;于是乎,自己就像尝试着做一个,一开始总是会出问题的,不过功夫不负有心人,最后总算被我搞出来了。因为是豌豆荚截的图,所以看不到扫描效果,大家可以下载源码看。开始正题。一开始的时候,我从新声明了一个Camera 对象,然后按照正常的逻辑打开camera.open() ,打开LED灯,关灯等等。但是这样会报错的:出现这样的问题的原因是:系统只有一个Camera 对象,我再重新声明一个Camera 对象的话,当然会报错,这是我犯错误比较严重的地方,果然还是应该先细读一下Z
2、xing 的源码啊!解决方法:因为Zxing 扫描启动的时候已经初始化了一个Camera 对象了,所以没有必要再重新声明一个对象。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 30 页 - - - - - - - - - 这个初始方法是在CameraManager类里面,大家可以去看下。到了这里问题已经解决一半了,只要我们在CameraManager里面添加一个获取camera 对象的方法就行, 然后你在 CaptureActivity里面调用那个方法来获取已经打开的c
3、amara,最后设置一下开灯,关灯呢关灯一些相关属性就OK 了。开灯、关灯的关键代码,这个百度也能搜到的,记得要添加相关权限:/* 开灯*/private OnClickListener openListener = new OnClickListener() Overridepublic void onClick(View v) camera = CameraManager.getCamera();parameter = camera.getParameters();/ TODO 开灯if (isOpen) btnOpen.setText(关灯 );parameter .setFlashMo
4、de(Parameters.FLASH_MODE_TORCH);camera.setParameters(parameter); isOpen = false; else / 关灯btnOpen.setText(开灯 );parameter .setFlashMode(Parameters.FLASH_MODE_OFF);camera.setParameters(parameter);isOpen = true;名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 30 页 -
5、 - - - - - - - - 不过,程序写到这里还并没有结束,运行以后,发现可以开灯了,但是关灯以后还是会报错的。报什么错呢?看下面:大家一看应该知道是什么问题了,不知道的话百度一下吧:http:/ void surfaceDestroyed(SurfaceHolder holder) camera.setPreviewCallback(null) ;camera.stopPreview();camera.release();camera = null;我试了,可以关灯了,但是退出应用的时候还是报错了,我想是不是在OnDestory() 里面也加上这句话,结果运行还是不行。最后想了一想,我
6、调用的不是CameraManager里面的初始化方法吗?然后再回过头来看这个类,发现里面已经写好了桌面销毁Camera 对象的方法了:/* Tells the camera to stop drawing preview frames.*/public static void stopPreview() if (camera != null & previewing) if (!useOneShotPreviewCallback) camera.setPreviewCallback(null);camera.stopPreview();previewCallback.setHandler(nu
7、ll, 0);autoFocusCallback.setHandler(null, 0);名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 30 页 - - - - - - - - - previewing = false;于是乎,我就在surfaceDestroyed里面调用了这个stopPreView() 这个方法,运行之后果断不报错了。到这里为止,给二维码扫描加开灯的功能就真的大功告成了。目前测试还没有发现扫描问题,如果以后大家发现了问题,希望能一起探讨。最后给大家分
8、享一些关于Zxing 二维码扫描的资源,个人觉得写的真不错,里面还有一些延伸的知识,楼主真的很细心啊!地址: http:/ KB, 下载次数 : 4) Android 硬件 android camera 开发Method called after release()问题复制链接 现 在 在 做android相 机 开 发 , 遇 到 一 个 问 题 , 就 是 拍 照 完 , 去 预 览 , 可 是 这 样 几 次 以 后 就 报 异 常 了java.lang.RuntimeException: Method called after release()刚刚搜到一个说法是:说的是权限的问题不知
9、道哪个大哥知道这个具体的原因大哥些都没有人知道么. 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 30 页 - - - - - - - - - 我把 这个权限加上以后相机不是很卡,不知道为什么,那位大侠知道怎么解决这个问题。public void surfaceDestroyed(SurfaceHolder holder) camera.setPreviewCallback(null) ;camera.stopPreview();camera.release();cam
10、era = null;Android 打开关闭闪光灯 (里程碑 2.1) 不同的手机,开启闪光灯的方法不一样,这里以摩托罗拉里程碑的手机为例main.xml: Activity 代码:package com.android.flashlight; import android.app.Activity; import android.os.Bundle; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 30 页 - - - - - - - - - import andro
11、id.view.View; import android.widget.Button; publicclass AndroidFlashLightActivity extends Activity /* Called when the activity is first created. */private Button mBtnOpen,mBtnClose; private MyFlashLight myFlashLight; Overridepublicvoid onCreate(Bundle savedInstanceState) super .onCreate(savedInstanc
12、eState); setContentView(R.layout.main); mBtnOpen = (Button) findViewById(R.id.open); mBtnClose = (Button) findViewById(R.id.close); try myFlashLight = new MyFlashLight(); catch (Exception e) e.printStackTrace(); mBtnOpen.setOnClickListener(new Button.OnClickListener() Overridepublicvoid onClick(View
13、 v) if (myFlashLight.isEnabled() = false) myFlashLight.enable(true ); ); mBtnClose.setOnClickListener(new Button.OnClickListener() Overridepublicvoid onClick(View v) if (myFlashLight.isEnabled() = true ) myFlashLight.enable(false); ); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 -
14、 - - - - - - 第 6 页,共 30 页 - - - - - - - - - 封装的方法:封装的方法:package com.android.flashlight; import java.lang.reflect.Method; import android.os.IBinder; publicclass MyFlashLight private Object svc = null; private Method getFlashlightEnabled = null; private Method setFlashlightEnabled = null; SuppressWarn
15、ings( unchecked) public MyFlashLight() throws Exception try / call ServiceManager.getService(hardware) to get an IBinder for the service. / this appears to be totally undocumented and not exposed in the SDK whatsoever. Class sm = Class.forName(android.os.ServiceManager); Object hwBinder = sm.getMeth
16、od(getService, String.class ).invoke(null, hardware); / get the hardware service stub. this seems to just get us one step closer to the proxy Class hwsstub = Class.forName(android.os.IHardwareService$Stub); Method asInterface = hwsstub.getMethod(asInterface, android.os.IBinder.class ); svc = asInter
17、face.invoke(null, (IBinder) hwBinder); / grab the class (android.os.IHardwareService$Stub$Proxy) so we can reflect on its methods Class proxy = svc.getClass(); / save methods getFlashlightEnabled = proxy.getMethod(getFlashlightEnabled); setFlashlightEnabled = proxy.getMethod(setFlashlightEnabled, bo
18、olean . class ); catch (Exception e) thrownew Exception(LED could not be initialized); publicboolean isEnabled() try return getFlashlightEnabled.invoke(svc).equals(true ); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 30 页 - - - - - - - - - catch (Exception e)
19、 returnfalse; publicvoid enable(boolean tf) try setFlashlightEnabled.invoke(svc, tf); catch (Exception e) 其他一些手机开启闪光灯的方法可以参考http:/ 开启闪光灯的几种办法1、用 IHardwareService直接控制Android1.5 以前是直接提供这个接口的,之后呢,需要我们自己来做一下。在你的项目中新建一个包android.os, 新建一个 IHardwareService.aidl文件,内容如下:javaview plaincopy package android.os;
20、/* hide */interface IHardwareService / obsolete flashlight supportboolean getFlashlightEnabled(); void setFlashlightEnabled(boolean on); 然后在你的程序中引入javaview plaincopy import android.os.IHardwareService; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 30 页 - - - -
21、 - - - - - /* * 设置闪光灯的开启和关闭 * param isEnable * author linc * date 2012-3-18 */privatevoid setFlashlightEnabled(boolean isEnable) try Method method = Class.forName(android.os.ServiceManager).getMethod(getService, String.class); IBinder binder = (IBinder) method.invoke(null, new Object hardware ); IHa
22、rdwareService localhardwareservice = IHardwareService.Stub.asInterface(binder); localhardwareservice.setFlashlightEnabled(isEnable); catch (Exception e) e.printStackTrace(); 这样就可以开启闪光灯了。要使用的权限:htmlview plaincopy 2、用照相机来控制闪光灯这是思维的另一个方向。 Camera 自带丰富的接口与Parameters ,我们只管拿来使用就好了。javaview plaincopy privat
23、e Camera camera = null; private Parameters parameters = null; / 直接开启camera = Camera.open(); parameters = camera.getParameters(); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 30 页 - - - - - - - - - parameters.setFlashMode(Parameters.FLASH_MODE_TORCH);/ 开启 came
24、ra.setParameters(parameters); / 直接关闭parameters.setFlashMode(Parameters.FLASH_MODE_OFF);/ 关闭 camera.setParameters(parameters); camera.release(); 如果这样遇到问题的话,可以尝试用camera 的 preview 方法:javaview plaincopy privatevoid OpenLightOn() if ( null = m_Camera ) m_Camera = Camera.open(); Camera.Parameters paramete
25、rs = m_Camera.getParameters(); parameters.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH); m_Camera.setParameters( parameters ); m_Camera.autoFocus( new Camera.AutoFocusCallback () publicvoid onAutoFocus(boolean success, Camera camera) ); m_Camera.startPreview(); privatevoid CloseLightOff() if ( m_
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年android条码照相 2022 android 条码 照相

限制150内