ImageVerifierCode 换一换
格式:DOC , 页数:15 ,大小:75KB ,
资源ID:3550208      下载积分:20 文钱
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,省得不是一点点
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.wenke99.com/d-3550208.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(android+静音与马达振动流程.doc)为本站会员(sk****8)主动上传,文客久久仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知文客久久(发送邮件至hr@wenke99.com或直接QQ联系客服),我们立即给予删除!

android+静音与马达振动流程.doc

1、android 静音与马达振动流程1,设置静音和振动静音和振动都属于来电后的动作.所以在设置静音和振动时都只是设置一些标识,并往数据库写入相应标识.文件:packages/apps/settings/src/com/android/settings/SoundAndDisplaySettings.javaprivate CheckBoxPreference mSilent;private CheckBoxPreference mVibrate;private void setRingerMode(boolean silent, boolean vibrate) if (silent) mAud

2、ioManager.setRingerMode(vibrate ? AudioManager.RINGER_MODE_VIBRATE :AudioManager.RINGER_MODE_SILENT); else mAudioManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL);mAudioManager.setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER,vibrate ? AudioManager.VIBRATE_SETTING_ON: AudioManager.VIBRATE_SET

3、TING_OFF);public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) if (preference = mSilent | preference = mVibrate) setRingerMode(mSilent.isChecked(), mVibrate.isChecked();if (preference = mSilent) updateState(false);.静音和振动是复选框按钮,两个中有一个发生变化时调用 setRingerMode 对状态

4、进行设置;如下状态描术:RINGER_MODE_SILENT 静音,且无振动RINGER_MODE_VIBRATE 静音,但有振动RINGER_MODE_NORMAL 正常声音,振动开关由 setVibrateSetting 决定.铃响模式的设置是通过 mAudioManager(音频管理器) 来实现的.2 音频管理器服务mAudioManager 所在服务如下:文件: frameworks/base/media/java/android/media/AudioManager.javapublic static final int RINGER_MODE_SILENT = 0;public s

5、tatic final int RINGER_MODE_VIBRATE = 1;public static final int RINGER_MODE_NORMAL = 2;public void setRingerMode(int ringerMode) IAudioService service = getService();try service.setRingerMode(ringerMode); catch (RemoteException e) Log.e(TAG, “Dead object in setRingerMode“, e);将铃响模式值传给音频接口服务 IaudioSe

6、rvicepublic static final int VIBRATE_TYPE_RINGER = 0;public static final int VIBRATE_TYPE_NOTIFICATION = 1;public static final int VIBRATE_SETTING_OFF = 0;public static final int VIBRATE_SETTING_ON = 1;public static final int VIBRATE_SETTING_ONLY_SILENT = 2;public void setVibrateSetting(int vibrateT

7、yp , int vibrateSetting) IAudioService service = getService();try service.setVibrateSetting(vibrateType, vibrateSetting); catch (RemoteException e) Log.e(TAG, “Dead object in setVibrateSetting“, e);将振动类型和振动设置传给音频接口服务 IaudioService,IaudioService 的定义如下:frameworks/base/media/java/android/media/IAudioSe

8、rvice.aidlframeworks/base/media/java/android/media/AudioService.java文件: frameworks/base/media/java/android/media/AudioService.java文件: frameworks/base/core/java/android/provider/Settings.javapublic void setRingerMode(int ringerMode) synchronized (mSettingsLock) if (ringerMode != mRingerMode) setRinge

9、rModeInt(ringerMode, true);/ Send sticky broadcastbroadcastRingerMode();将对应模式下的音量写入数据库,并将该模式广播.public void setVibrateSetting(int vibrateType, int vibrateSetting) mVibrateSetting = getValueForVibrateSetting(mVibrateSetting, vibrateType, vibrateSetting);/ Broadcast changebroadcastVibrateSetting(vibrat

10、eType);/ Post message to set ringer mode (it in turn will post a message/ to persist)sendMsg(mAudioHandler, MSG_PERSIST_VIBRATE_SETTING, SHARED_MSG, SENDMSG_NOOP, 0, 0,null, 0);同样将振动模式写入数据库,并广播该模式.3 硬件服务文件:frameworks/base/services/java/com/android/server/HardwareService.java开始振动:public void vibrate(

11、long milliseconds, IBinder token) if (mContext.checkCallingOrSelfPermission(android.Manifest.permission.VIBRATE)!= PackageManager.PERMISSION_GRANTED) throw new SecurityException(“Requires VIBRATE permission“);/ Were running in the system server so we cannot crash. Check for a/ timeout of 0 or negati

12、ve. This will ensure that a vibration has/ either a timeout of 0 or a non-null pattern.if (milliseconds dev, 在 sys/class/timed_output 子目录创建文件 enablestatic int create_timed_output_class(void)if (!timed_output_class) timed_output_class = class_create(THIS_MODULE, “timed_output“);if (IS_ERR(timed_outpu

13、t_class)return PTR_ERR(timed_output_class);atomic_set(return 0;int timed_output_dev_register(struct timed_output_dev *tdev)int ret;if (!tdev | !tdev-name | !tdev-enable | !tdev-get_time)return -EINVAL;ret = create_timed_output_class();if (ret index = atomic_inc_return(tdev-dev = device_create(timed_output_class, NULL,MKDEV(0, tdev-index), NULL, tdev-name);if (IS_ERR(tdev-dev)return PTR_ERR(tdev-dev);ret = device_create_file(tdev-dev, if (ret dev, tdev);tdev-state = 0;

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。