Android学习(五)

学号 20189214 《Java程序设计》第十周学习总结

教材学习内容总结

偏好

  1. 在sharedPreferences包含一个键值对,可以使用contains方法,来判断指定的键是否存在。可以使用getAll方法对所有的键值对获取为一个Map。
  2. SettingFragment类是PreferenceFragment类的一个子类。它是一个简单的类,直接调用了addPreferences FromResource方法来加载3个Preference子类的布局xml文档。

操作文件

  1. Android设备提供了两种存储区域,分别是内部的外部的。内部存储对于应用程序是私有的,用户和其他的应用程序不能访问它。而外部存储的文件将会和其他的应用程序分享。比如Camera应用程序。
  2. 要操作外部存储的文件,首先要在清单文件中添加Permission。
  3. 存储在内部存储中的文件和存储在外部存储的公有文件并不具有相同的安全等级。存储在外部的文件用户可以删除该存储,并且使用某种工具来访问该文件。

操作数据库

SQLiteDataBase和SQLiteOpenHelper类都属于android.database.sqlite包。

  1. 要在Android应用程序中使用数据库,扩展SQLiteOpenHelper以帮助创建数据库和表,以及连接数据库。
    • 提供构造方法,它调用自己的超类,传入Context和数据库名称以及其他内容。
    • 覆盖onCreate方法和onUpgrade方法。
    • SQLiteOpenHelper自动管理到底层数据库的连接。有getReadableDatabase()和 getWritableDatabase()两种方法返回一个SQLiteDatabase实例。
  2. SQLiteDatabase类中有insert或者execSQL等方法操作数据库的数据。
  3. Cursor接口提供了对数据库查询所返回的结果集的读和写访问。其moveToFirst、moveToNext、moveToPrevious、moveToLast或moveToPosition方法。常用来自行刷新ListView。

获取图片

Android为获取静态图像的应用程序提供了两个选项,使用一个内建的意图来启动Camera或者使用Camera API。
在API中有4个参数shutter、raw、postview、jpeg。分别用来捕获瞬间的回调,解压缩图像数据的回调、预览图像数据的回调、JPEG图像数据的回调。

Camera2 中主要的API类

  • CameraManager类 : 摄像头管理类,用于检测、打开系统摄像头,通过getCameraCharacteristics(cameraId)可以获取摄像头特征。
  • CameraCharacteristics类:相机特性类,例如,是否支持自动调焦,是否支持zoom,是否支持闪光灯一系列特征。
  • CameraDevice类: 相机设备,类似早期的camera类。
  • CameraCaptureSession类:用于创建预览、拍照的Session类。通过它的setRepeatingRequest()方法控制预览界面 , 通过它的capture()方法控制拍照动作或者录像动作。
  • CameraRequest类:一次捕获的请求,可以设置一些列的参数,用于控制预览和拍照参数,例如:对焦模式,曝光模式,zoom参数等等。

Camera API详解

代码调试中的问题和解决过程

  • 问题1:SharedPreferences中putStringSet测试无效的问题
    Android学习(五)
  • 问题1解决方案:原因在于putStringSet和getStringSet中的参数不能是同一个object,所以更改为new HashSet<>(SharedPreferences.getStringSet("abc",new HashSet()));以NEW对象来避免同一个object的问题。
    此时

    Set s = new HashSet<>();
    s.add("zhy");
    s.add("lxq");
    editor.putStringSet("abc", s);

代码托管

Android学习(五)

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 150/200 2/2 20/20
第二周 200/400 1/3 20/40
第三周 100/500 1/4 10/50
第四周 200/700 1/5 15/65
第五周 1486/2186 1/6 15/80
第六周 1400/3586 1/7 18/98
第七周 1400/5000 1/8 18/116
第八周 1200/6200 1/9 15/131
第九周 800/7000 2/11 12/143
第十周 1500/8500 1/12 15/158
  • 计划学习时间:15小时

  • 实际学习时间:15小时

参考资料

Android学习(五)

上一篇:Javascript学习-------正则表达式


下一篇:C语言中,为什么指针表达式的值+1.对应的地址值却+4?/为什么两个数组元素的地址相减之差不为地址之差?