android 常用的重要代码

  1,设置静音和振动
  静音和振动都属于来电后的动作.所以在设置静音和振动时都只是设置一些标识,并往数据库写入相应标识.
  文件:packages/apps/settings/src/com/android/settings/SoundAndDisplaySettings.java

java代码:
  1. private CheckBoxPreference mSilent;

  2. private CheckBoxPreference mVibrate;

  3. private void setRingerMode(boolean silent, boolean vibrate) {

  4. if (silent) {

  5. mAudioManager.setRingerMode(vibrate ? AudioManager.RINGER_MODE_VIBRATE :

  6. AudioManager.RINGER_MODE_SILENT);

  7. } else {

  8. mAudioManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL);

  9. mAudioManager.setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER,

  10. vibrate ? AudioManager.VIBRATE_SETTING_ON

  11. : AudioManager.VIBRATE_SETTING_OFF);

  12. }

  13. }

  14. public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {

  15. if (preference == mSilent || preference == mVibrate) {

  16. setRingerMode(mSilent.isChecked(), mVibrate.isChecked());

  17. if (preference == mSilent) updateState(false);

  18. }


复制代码

       静音和振动是复选框按钮,两个中有一个发生变化时调用setRingerMode对状态进行设置;如下状态描术:
  RINGER_MODE_SILENT 静音,且无振动
  RINGER_MODE_VIBRATE 静音,但有振动
  RINGER_MODE_NORMAL 正常声音,振动开关由setVibrateSetting决定.
  铃响模式的设置是通过mAudioManager(音频管理器)来实现的.

   2 音频管理器服务
  mAudioManager所在服务如下:
  文件: frameworks/base/media/java/android/media/AudioManager.java

java代码:
  1. public static final int RINGER_MODE_SILENT = 0;

  2. public static final int RINGER_MODE_VIBRATE = 1;

  3. public static final int RINGER_MODE_NORMAL = 2;

  4. public void setRingerMode(int ringerMode) {

  5. IAudioService service = getService();

  6. try {

  7. service.setRingerMode(ringerMode);

  8. } catch (RemoteException e) {

  9. Log.e(TAG, "Dead object in setRingerMode", e);

  10. }

  11. }


复制代码

        将铃响模式值传给音频接口服务IaudioService

java代码:
  1. public static final int VIBRATE_TYPE_RINGER = 0;

  2. public static final int VIBRATE_TYPE_NOTIFICATION = 1;

  3. public static final int VIBRATE_SETTING_OFF = 0;

  4. public static final int VIBRATE_SETTING_ON = 1;

  5. public static final int VIBRATE_SETTING_ONLY_SILENT = 2;

  6. public void setVibrateSetting(int vibrateTyp , int vibrateSetting) {

  7. IAudioService service = getService();

  8. try {

  9. service.setVibrateSetting(vibrateType, vibrateSetting);

  10. } catch (RemoteException e) {

  11. Log.e(TAG, "Dead object in setVibrateSetting", e);

  12. }

  13. }


复制代码

        将振动类型和振动设置传给音频接口服务IaudioService,IaudioService的定义如下:
        frameworks/base/media/java/android/media/IAudioService.aidl
        frameworks/base/media/java/android/media/AudioService.java
        文件: frameworks/base/media/java/android/media/AudioService.java
        文件: frameworks/base/core/java/android/provider/Settings.java

java代码:
  1. public void setRingerMode(int ringerMode) {

  2. synchronized (mSettingsLock) {

  3. if (ringerMode != mRingerMode) {

  4. setRingerModeInt(ringerMode, true);

  5. // Send sticky broadcast

  6. broadcastRingerMode();

  7. }

  8. }

  9. }


复制代码


系列之Android和大家分享几个重要的代码(二)的帖子链接 http://www.eoeandroid.com/thread-103284-1-1.html
系列之Android和大家分享几个重要的代码(三)的帖子链接 http://www.eoeandroid.com/thread-105619-1-1.html
系列之Android和大家分享几个重要的代码(四)的帖子链接 http://www.eoeandroid.com/thread-105621-1-1.html
系列之Android和大家分享几个重要的代码(五)的帖子链接 http://www.eoeandroid.com/thread-105622-1-1.html
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值