2021年国开电大《Android核心开发技术》形考任务2答案
-
资源ID:183719070
资源大小:24.65KB
全文页数:9页
- 资源格式: DOCX
下载积分:15.8金贝
快捷下载
账号登录下载
微信登录下载
微信扫一扫登录
1、金锄头文库是“C2C”交易模式,即卖家上传的文档直接由买家下载,本站只是中间服务平台,本站所有文档下载所得的收益全部归上传人(卖家)所有,作为网络服务商,若您的权利被侵害请及时联系右侧客服;
2、如你看到网页展示的文档有jinchutou.com水印,是因预览和防盗链等技术需要对部份页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有jinchutou.com水印标识,下载后原文更清晰;
3、所有的PPT和DOC文档都被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;下载前须认真查看,确认无误后再购买;
4、文档大部份都是可以预览的,金锄头文库作为内容存储提供商,无法对各卖家所售文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;
5、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据;
6、如果您还有什么不清楚的或需要我们协助,可以点击右侧栏的客服。
|
下载须知 | 常见问题汇总
|
2021年国开电大《Android核心开发技术》形考任务2答案
国开电大Android核心开发技术形考任务2答案题目为随机抽题 请用CTRL+F来搜索试题形考任务二【简答题】使用zxing完成扫描二维码的初始化、扫描、结果提示功能,实现主要代码即可。导入项目Override public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.main); /初始化 CameraManager CameraManager.init(getApplication(); viewfinderView = (ViewfinderView) findViewById(R.id.viewfinder_view); txtResult = (TextView) findViewById(R.id.txtResult); hasSurface = false; inactivityTimer = new InactivityTimer(this); 打开Eclipse 导入 源码中的 Android 项目,然后右击项目 选择“Build path”"Add External Archives" 把核心库 core.jar文件加入到项目中。此时编译一下项目,会发现报错,“Multiple substitutions specified in non-positional format; did you mean to add the formatted="false" attribute?”之类的。打开raw 下的Values 发现错误是在一个<String>上。这里把 “preferences_custom_product_search_summary” 里的 %s %f 全部都改成 %1$s %1$f(因为我们用不到多国语言,建议只保留默认的Value ,其他全部删除)。原因:由于新的SDK采用了新版本的aapt(Android项目编译器),这个版本的aapt编译起来会比老版本更加的严格,然后在Android最新的开发文档的描述String的部分,已经说明如何去设置 %s 等符号“If you need to format your strings using String.format(String, Object.) , then you can do so by putting your format arguments in the string resource. For example, with the following resource:<string name="welcome_messages">Hello, %1$s! You have %2$d new messages.</string>In this example, the format string has two arguments: %1$s is a string and %2$d is a decimal number. You can format the string with arguements from your application.“经过以上步骤后项目应该就可以运行了。但是ZXing的android项目东西太多了,有很多是我们不需要的,得新建另一个项目简化它。简化在开始前大致介绍一下简化ZXing需要用到各个包 、类的职责。 CaptureActivity。这个是启动Activity 也就是扫描器(如果是第一安装,它还会跳转到帮助界面)。 CaptureActivityHandler 解码处理类,负责调用另外的线程进行解码。 DecodeThread 解码的线程。 com.google.zxing.client.android.camera 包,摄像头控制包。 ViewfinderView 自定义的View,就是我们看见的拍摄时中间的框框了。新建另一个项目新建另一个项目将启动的Activity命名为CaptureActivity,并导入核心库。项目新建完成后我们打开 CaptureActivity 的布局文件,我这里为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" /> <com.Zxing.Demo.view.ViewfinderView android:id="+id/viewfinder_view" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="android:color/transparent" /> <TextView android:layout_width="wrap_content" android:id="+id/txtResult" android:layout_height="wrap_content" android:text="string/hello" /> </FrameLayout>可以看到在XML里面用到了 ViewfinderView 自定义view 。所以新建一个View 的包,然后把:ViewfinderView 和ViewfinderResultPointCallback 靠到里面(记得对应修改XML里面的包)。打开CaptureActivity 覆盖 onCreate 方法:这里调用到的 CameraManager 类是控制摄像头的包里的类。新建一个camera包把:com.google.zxing.client.android.camera 里面的类全部拷入,另外我把PlanarYUVLuminanceSource也拷入到这个包里面。根据错误的提示来修正代码,主要是修改正包结构。(整 个简化的流程都是如此:“根据错误提示,修改代码”)。在修改的过程中,有很多是关于R 资源的问题,在此我们需要将Values 里面的两个xml资源文件拷入项目中:colos.xml 和ids.xml 。 ctrl+b 一下看看error 是不是少了很多。在CameraManager中有些地方需要用到项目的配置,这里需要把配置直接写入代码中:/ SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); /是否使用前灯/ if (prefs.getBoolean(PreferencesActivity.KEY_FRONT_LIGHT, false) / FlashlightManager.enableFlashlight();/ FlashlightManager.enableFlashlight();使用摄像头需要加入相应的权限:<uses-permission android:name="android.permission.CAMERA"></uses-permission> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission> <uses-feature android:name="android.hardware.camera" /> <uses-feature android:name="android.hardware.camera.autofocus" /> <uses-permission android:name="android.permission.VIBRATE"/> <uses-permission android:name="android.permission.FLASHLIGHT"/>当View 和 camera 包里的错误修正完成后,我们继续来看CaptureActivity。覆盖onResume方法初始化摄像头:Override protected void onResume() super.onResume(); SurfaceView surfaceView = (SurfaceView) findViewById(R.id.preview_view); SurfaceHolder surfaceHolder = surfaceView.getHolder(); if (hasSurface) initCamera(surfaceHolder); else surfaceHolder.addCallback(this); surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); decodeFormats = null; characterSet = null; playBeep = true; AudioManager audioService = (AudioManager) getSystemService(AUDIO_SERVICE); if (audioService.getRingerMode() != AudioManager.RINGER_MODE_NORMAL) playBeep = false; initBeepSound(); vibrate = true; initCameraprivate void initCamera(SurfaceHolder surfaceHolder) try CameraManager.ge