Android学习笔记(二)——手机控制

1.手机通知功能——Notification和NotificationManager的应用

  Notification是Android系统中的一种通知服务,其通过状态栏、手机震动、LED和提示音等多种通知方式提供了丰富而良好的用户体验。

使用步骤:

(1)获取NotificationManager对象。通过调用系统NOTIFICATION_SERVICE服务,获取NotificationManager实例。

NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);

(2)创建一个Notification对象。

(3)设置Notification对象的各项属性。

(4)执行这个Notification通知,使用NotificationManager.notify()完成通知的发送。

 

2.手机闹铃功能——AlarmManager的应用

  AlarmManager是Android系统提供的闹铃管理器,在系统中有一个AlarmManagerService服务程序,该服务程序是真正提供闹铃服务的,其维护各类注册后的各种类型闹铃的状态。在Android系统中,闹铃的定义是广泛的,不仅仅限于发出提示音,也可以是LED闪烁等。

  其工作原理是AlarmManagerService实时监控着AlarmManager,并且根据AlarmManager的定义,通过PendIntent发出广播信息,由相应的BroadcastReceiver接收并执行预定义的操作。

 

3.使用系统提供的异步加载——AsyncTask的应用

  AsyncTask是Android一种解决异步加载的方案,它比Handler和Message的方式更加轻量级。

  使用步骤如下:

(1)自定义一个继承AsyncTask的类。可以传入AsyncTask定义的3个泛型参数,也可以不传递。

(2)实现从AsyncTask继承下来的方法。

(3)在主线程代码中创建AsyncTask对象,并调用execute()方法。

在AsyncTask中,主要有4种方法:

onPreExecute():在执行实际后台操作之前被调用

doInBackground(Params...):紧跟onPreExecute()之后执行实际的后台操作,一般执行比较耗时的操作,如需要更新实时任务进度,可以调用publishProgress().

onProgressUpdate(Progress..):运行于UI线程,可更新实时进度。

onPostExecute(Result):运行于UI线程,其参数就是doInBackground(Params...)的返回值。

 

4.获取手机及通信网络的相关状态信息——TelephoneManager及Android,provider.settings.System的应用

  TelephoneManager类主要提供一系列get方法来获取与手机通信相关的状态和信息,其中包括手机设备信息、网络状态等。其对象可以通过Context.getSystemService(TELEPHONY_SERVICE)方法来获得。此时,必须在Manifest文件中添加访问权限“android.permission.READ_PHONE_STATE”。

  Android.provider.settings.System主要查询蓝牙状态,飞行模式状态,数据漫游状态以及WiFi状态。

 

5.拨打电话——Intent.ACTION_CALL_BUTTON的应用

  开发者只需要将电话号码通过特定的Intent进行传递即可,步骤如下:

(1)添加“android.permission.CALL_PHONE”通话权限。

(2)自定义Intent对象,设置其action为“ACTION_CALL”这个Intent自带的常量。

(3)将电话号码解析为URI,并传入Intent.

实现此功能需要权限android.permission.CALL_PHONE

 

6.实现手机的振动提示——Vibrator的应用

  Vibrator是Android提供的振动器,没有构造器,通过getSystemService(Context.VIBRATOR_SERVICE)方法获取对象。

  使用此类获取信息时,需要在Manifest中添加访问权限"android.permission.VIBRATE"。

 

7.获得手机的电量——Intent.ACTION_BATTERY_CHANGED的应用

  在Android系统中,系统会随时监测电量的变化并通过Intent发出广播信息。如果需要知道当前设备的电量,只需要在程序中注册一个广播接收器,并设置其IntentFilter来拦截此信息即可获得当前电量。

  此Intent中带有许多与电量相关的信息,可以通过BatteryManager的相关常量获取指定信息。常用的常量有当前电量(EXTRA_LEVEL),总电量(EXTRA_SCALE)等。

 

8.判断SD卡的各种状态及容量

  SD卡主要的状态都封装在Environment类中,Environment类提供了访问环境变量的方法,其方法都是静态的,可以直接调用。Environment.getExternalStorageState()可以获得当前SD卡状态。

  获取SD卡容量是通过StatFs类来获取的。由于Android系统是基于Linux系统的,所以存储空间是以数据块的形式划分的,所以SD卡容量需要通过数据块数乘以每个数据块的大小而得到。

 

9.动态获取及修改手机屏幕方向——LANDSCAPE和PORTRAIT

获取当前屏幕的显示方向:Activity.getRequestedOrientation()

设置当前屏幕的显示方向:Activity.setRequestedOrientaion()

系统自带的显示标志值:

横向标识:Activity.SCREEN_ORIENTATION_LANDSCAPE

竖向标识:Activity.SCREEN_ORIENTATION_PORTRAIT

 

10.调整系统的音量——AudioManager的应用

  AudioManager在程序中通过getSystemService(Context.AUDIO_SERVICE)获得,主要实现对声音的控制。

 

11.常用传感器的使用——SensorManager的应用

  SensorManager通过getSystemService(SERSOR_SERVICE)得到,完成类似获取Sensor对象,为特定Sensor注册监听和移除监听的操作。

  Sensor是传感器类,用于获取传感器的一些具体数值。

  SensorListener是传感器的监听器接口,提供onSensorChanged和onAccuracyChanged两个方法。

  SensorEvent是传感器事件。封装4个public属性:accuracy,sensor,timestamp,values。

 

12.使用剪贴板——ClipboardManager的应用

   实现原理很简单,将内容存储到一个全局性的存储空间,于是各个应用程序之间就可以调用共享存储空间的内容。但目前只支持CharSequence的内容。

   具体实现类是ClipboardManager,其通过getSystemService(CLIPBOARD_SERVICE)方法获得对象。

 

13.系统的搜索服务——SearchManager的应用

 

14.用启动splash——WindowsManager与线程综合应用

   优秀的应用程序一般在应用启动时,会通过一个splash展示开发团队的LOG。

   实现比较简单,就是launcherActivity用于展示splash,用Handler.postDelayed方法指定时间后跳转到主Activity。

 

15.查看应用的包信息——PackageManager的应用

   通过PackageManager类可以查询permission的相关信息,可以获取application的相关信息,同时可以进行增加和删除permission等操作。通过getPackageManager()方法获取对象。

 

16.获取当前位置及监听位置变化——LocationManager等的应用

  使用步骤:

(1)通过getSystemService()方法获取系统的LoactionManager

(2)利用LoactionManager.getBestProvider()方法获取一个当前环境最佳的LoactionProvider对象

(3)利用LoactionManager.getLastKownLocation()方法获取Loaction对象

(4)解析Loaction对象获取位置信息

(5)创建LoactionListener并重写onLoactionChanged方法完成监听位置变化的功能

 

17.趋近警告——LocationManager.addProximityAlert方法的应用

   实现此功能需要依赖Geocoder类和LoactionManager中的addProximityAlert方法。

   Geocoder完成位置信息和经纬度之间的转换,addProximityAlert则根据经纬度和半径发出提醒。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值