安卓4.1.2通话设置程序下载

加入应用集
云安装到手机
<button type="button" class="btn btn-default ex-btn-glyphicon hidden-xs" data-toggle="popover" data-placement="bottom" data-trigger="hover" data-container="body" data-html="true" title="扫描二维码下载到手机" data-content="">二维码
酷安点评:如果你想通过pc来管理手机,那AirDroid绝对是最好的选择了,用浏览器就可以,比安装那些pc助手要简单的多,非常好用
我的评分(未评分)
软件名称:AirDroid浏览器管理手机
APK名称:com.sand.airdroid
最新版本:4.1.2.1
支持ROM:4.0及更高版本
界面语言:简体中文
软件大小:21.88M
更新日期:2个星期前
开发者:厦门同步网络有限公司
android.permission.READ_SMS读取短信内容 读取短信内容
android.permission.SEND_SMS发送短信 发送短信
android.permission.RECEIVE_SMS接收短信 接收短信
android.permission.WRITE_SMS编写短信 允许编写短信
android.permission.READ_CONTACTS读取联系人 允许应用访问联系人通讯录信息
android.permission.WRITE_CONTACTS写入联系人 写入联系人,但不可读取
android.permission.READ_PHONE_STATE读取电话状态 访问电话状态
android.permission.GET_ACCOUNTS访问账户Gmail列表 访问GMail账户列表
android.permission.SET_WALLPAPER设置桌面壁纸 设置桌面壁纸
android.permission.GET_TASKS获取任务信息 允许程序获取当前或最近运行的应用
android.permission.RESTART_PACKAGES结束系统任务 结束任务通过restartPackage(String)方法,该方式将在未来放弃
android.permission.KILL_BACKGROUND_PROCESSES结束后台进程 允许程序调用killBackgroundProcesses(String)方法结束后台进程
android.permission.VIBRATE使用振动 允许振动
android.permission.WRITE_EXTERNAL_STORAGE写入外部存储 允许程序写入外部存储,如SD卡上写文件
android.permission.READ_EXTERNAL_STORAGE读取外部存储 读取外部存储,如sdcard
android.permission.INTERNET访问网络 访问网络连接,可能产生GPRS流量
android.permission.ACCESS_WIFI_STATE获取WiFi状态 获取当前WiFi接入的状态以及WLAN热点的信息
android.permission.ACCESS_NETWORK_STATE获取网络状态 获取网络信息状态,如当前的网络连接是否有效
android.permission.WAKE_LOCK唤醒锁定 允许程序在手机屏幕关闭后后台进程仍然运行
android.permission.WRITE_SETTINGS读写系统设置 允许读写系统设置项
android.permission.CAMERA拍照权限 允许访问摄像头进行拍照
android.permission.FLASHLIGHT使用闪光灯 允许访问闪光灯
android.permission.BATTERY_STATS电量统计 获取电池电量统计信息
android.permission.DISABLE_KEYGUARD禁用键盘锁 允许程序禁用键盘锁
android.permission.CALL_PHONE拨打电话 允许程序从非系统拨号器里输入电话号码
android.permission.CHANGE_WIFI_STATE改变WiFi状态 改变WiFi状态
android.permission.CHANGE_NETWORK_STATE改变网络状态 改变网络状态如是否能联网
android.permission.SYSTEM_ALERT_WINDOW显示系统窗口 显示系统窗口
android.permission.READ_CALL_LOG读取通话记录 读取通话记录
android.permission.WRITE_CALL_LOG写入通话记录 写入通话记录
android.permission.ACCESS_FINE_LOCATION获取精确位置 通过GPS芯片接收卫星的定位信息,定位精度达10米以内
android.permission.ACCESS_COARSE_LOCATION获取粗略位置 通过WiFi或移动基站的方式获取用户粗略的经纬度信息,定位精度大概误差在30~1500米
android.permission.PROCESS_OUTGOING_CALLS处理拨出电话 允许程序监视,修改或放弃播出电话
android.permission.CHANGE_WIFI_MULTICAST_STATE改变WiFi多播状态 改变WiFi多播状态
android.permission.RECORD_AUDIO录音 录制声音通过手机或耳机的麦克
com.android.launcher.permission.INSTALL_SHORTCUT
com.android.vending.BILLING
com.google.android.providers.gsf.permission.READ_GSERVICES
android.permission.PACKAGE_USAGE_STATS
android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS
com.sand.airdroid.permission.C2D_MESSAGE
com.google.android.c2dm.permission.RECEIVE
加入应用集
无需数据线,AirDroid通过Windows客户端、Mac客户端、Web端利用电脑的大屏幕更好地与你的安卓设备互动。工作时,不会错过任何重要通知在电脑实时接收安卓设备上的所有通知,不会错过电话、短信、邮件等重要通知,更可直接在电脑回复短信;电脑和手机之间轻松传文件无需数据线,电脑与安卓设备之间轻松传图片、工作文档、链接等内容,没有比这更简单的方式了。小屏幕映射到大屏幕将安装设备的屏幕映射到电脑上,利用鼠标实时操作安卓设备的屏幕。(Beta版,目前仅支持已Root的部分设备)主要功能:1. 电脑接收通知在电脑上接收安卓设备上的所有通知,电话、短信、邮件、备忘提醒等不怕因为工作而错过。2. 文件传输无需USB数据线,通过Windows客户端、Mac端、Web端,都可实现电脑与安卓设备之间无线传输各类文件、文字、URL。3. AirMirror(Beta版)通过Windows客户端、Mac端控制安卓设备,使用安卓设备上的任何应用,可以输入文字提高输入效率,比如Whatsapp、Line等。4. 短信管理通过Windows客户端、Mac端、Web端,实现收、发短信,并可对设备上的短信进行删除。5. 联系人管理通过Windows客户端、Mac端、Web端,可进行联系人管理(Web版可支持编辑)。6. 媒体资料管理(Web版)通过Web浏览器管理图片、铃声、音乐、视频等媒体资料。7. 应用游戏管理(Web版)方便快速的应用搜索,强大的应用管理功能更支持安装、卸载以及APK(安卓应用安装包)导出。8. 相机与屏幕截图(Web版)远程开启设备前置/后置摄像头,并在网页中查看。支持实时查看设备屏幕,适用于演示、安防或远程协助。
分类标签:
新增功能:
1.推出全新LOGO;
2.视觉交互改版,给你更好的体验;
3.优化附近设备功能,随时随地都能快速传输文件;
4.其他BUG修正和细节优化。
请后查看评论
form>div>textarea" data-dock="left"
data-placement="top">
form').submit();">回复1567人阅读
【Android 开发学习之旅】(39)
&&&&&android电话应用程序概述
&&&&& 一.总览
&&& && &1.phone应用主界面
&&&&&&& 2.拨出电话流程
&&&&&&& 3.接入电话流程
&&&& 二.phone应用主界面
&&&&&&& phone应用程序的主界面包括”phone”,”Call log“,“Contacts”,”Favorites”四个部分组成。
&&&&&&& Phone:由12键的拨号盘组成。输入号码后单击电话图标按钮进行拨号
&&&&&&& Call log:存放呼入和呼出的历史记录。
&&&&&&& Contacts:存放电话联系人。
&&&&&&& Favorites:存放常用的电话联系人。
&&&&&& (1)以上4个部分由“DialtactsActivity.java”作为主要入口。在onCreate()方法中通hasPhoneProviderExtras过“setupDalerTab()”,“setupCallLogTab()”,”setupContactsTab”,”setupFavoritestTab()”以上4个方法构建以“tabHost”形式显示4个部分的主界面入口。而以上4个功能界面的实现分别由“TwelveKeyDialer.java”,”RecentListActity.java”,”ContactsListActivity.java”,3个部分实现。在这里,我们重点描述“Phone”部分的实现。
&&&& 三.拨出电话流程&&
&&& 进入由”TwelveKeyDIaler”构建的电话拨号程序,输入呼出的电话号码,单击拨号按钮。拨号的实现由placeCall()中实现。
Intent intent = new Intent(Intent.ACTION_CALL_PRIVILEGED,
&&&&&&&&&&&&&&& Uri.fromParts(&tel&, number, null));
&&&&&&& if (number == null || !TextUtils.isGraphic(number)) {
&&&&&&&&&&& // There is no number entered.
&&&&&&&&&&& if (phoneIsCdma() && phoneIsOffhook()) {
&&&&&&&&&&&&&&& // We only want to send this empty flash extra if we're CDMA and the
&&&&&&&&&&&&&&& // phone is offhook (don't want to send if ringing or dialing)
&&&&&&&&&&&&&&& intent.putExtra(EXTRA_SEND_EMPTY_FLASH, true);
&&&&&&&&&&&&&&& sendEmptyFlash =
&&&&&&&&&&& } else {
&&&&&&&&&&&&&&& playTone(ToneGenerator.TONE_PROP_NACK);
&&&&&&&&&&&&&&&
&&&&&&&&&&& }
&&&&&&& intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
&&&&&&& startActivity(intent);
&&&&&&& 通过查找”Intent.ACTION_CALL_PRIVILEGED”的实际字符窜,得知intent跳转的类为OutgoingCallBroadCaster.java.在此类的onCreate()方法中,对呼出的电话号码进行判断,并把号码定义分类为“紧急号码”和“非紧急号码”& :如果是紧急号码,则通过intent.setClass(this,InCallScreen.class);startActivity(intent)执行;如果是非紧急号码,则通过new
Intent(Intent.ACTION_NEW_OUTGOING_CALL);sendOrderedBroadcast();跳转到内部类OutgoingCallReceiver.java中执行拨号处理。
&&&&& 在“OutgoingCallReceiver”中“doReceiver()”对电话网络进行判断是否为cdma网络,如果是进一步判断是否基于OTA呼叫(这点不是很明白?)。此后跳转至IncallScreen类,进行呼叫处理。
&&&&& “IncallScreen”类构建了电话呼出界面以及对呼出的处理和响应。如果是第一次呼叫则执行onCreate(),非第一次则执行onNewIntent().此后这两个方法中都拥有internalResolveIntent(intent),此方法获得电话呼叫状态,其中包括了呼出状态和呼入状态。其中的placecall()方法返回得到呼出状态,返回结果由IncallScreen中的“InCallInitStatus”枚举变量定义。注:通过在placecall()中的phone.dial()建立与framework层的电话拨号连接。
&&&&&& 四.电话呼入流程
&&&&&&& 首先,呼叫通知由phoneApp来实现。
&&&&&&& PhoneApp.java-&onCreate()-&CallNotifier.java-&handleMessage()-&onNewRingingConnection()接受来自ril层的电话响应,并发出电话铃音或者震动。
&&&&&&& 当电话发出铃音或震动的同时,继续执行PhoneUtils.java-&showIncomingCallUi()-&PhoneApp.java-&void displayCallScreen()中的startActivity()跳转到InCallScreen.java中执行初始化呼入界面。
&&&&&& 继续执行internalResolveIntent(intent)-&internalAnswerCall()-&PhoneUtils.answerCall() -&Phone.accept()为电话开始接听
Android打电话流程
1 OutgoingCallBroadcaster.java
点击拨号盘拨打按钮后,进入通话的Phone包。此时首先进入的函数是OutgoingCallBroadcaster.java,该类是一个Activity。
由activity的生命周期可知,第一次进入时应调用onCreate()函数。(在该类中也只实现了这个函数。)解析一下这个函数:
1.1) 首先获取Intent对象,获取拨出的号码。
1.2) 接着判断号码是否为紧急号码,如果是紧急号码,将callNow变量赋&#20540;为true,启动InCallScreen,并发送广播。而在receiver里面判断callNow为ture就直接finish,而不再重复启动InCallScreen;如果不是紧急号码,将callNow变量赋&#20540;为false,发送广播“Intent.ACTION_NEW_OUTGOING_CALL”。
2 OutgoingCallReceiver.java
广播发送后OutgoingCallReceiver将会收到该息。该类是一个内部类,在类OutgoingCallBroadcaster里面,作用是接收OutgoingCallBroadcaster发送的广播,判断是否已经启动InCallScreen。没有启动的话就进行一些初始化,如:对OTA进行初始化。接收到广播之后,从Intent里面取出电话号码及其URi。然后,设置Intent为ACTION_CALL,并带上号码和uri。启动InCallScreen。关闭该Activity。
OTA:Over-the-Air Technology空中下载技术,是通过移动通信(GSM或CDMA)的空中接口对SIM卡数据及应用进行远程管理的技术。空中接口可以采用WAP、 GPRS、CDMA1X及短消息技术。OTA技术的应用,使得移动通信不仅可以提供语音和数据服务,而且还能提供新业务下载。
GSM:Global System for Mobile Communications,中文为全球移动通讯系统,俗称&全球通&。
CDMA:Code Division Multiple Access,又称码分多址,是在无线通讯上使用的技术,CDMA允许所有的使用者同时使用全部频带(1.2288Mhz),并且把其他使用者发出的讯号视为杂讯,完全不必考虑到讯号碰撞 (collision) 的问题。CDMA的优点包括:CDMA中所提供的语音编码技术,其通话品质比目前的GSM好,而且可以把用户对话时周围环境的噪音降低,使通话更为清晰。
3 InCallScreen.java
该类extends了Acitivity,并且implements了 OnClickListener,OnTouchListener和OnQueryCompleteListener。该类主要是负责通话的那一个界面,并且还负责菜单项各种按键事件和触摸时间的处理。同时本类还复写的finish()方法,所以一般不会被finish掉,调用这个方法时它又把自己放回栈中。InCallScreen可以接收这个Intent并启动。
3.1) onCreate(第一次)
3.1.1) callScreenOnCreate获得通话界面被创建的时间。
3.1.2) PhoneApp唤醒后台的服务程序。
3.1.3) 判断当前的通话状态(IDLE =没有通话行为,RINGING =正在通话或呼叫等待,OFFHOOK = The phone is off hook. At least one call exists that is dialing, active or holding and no calls are ringing or waiting.),如果正在通话,不会出现键盘锁。接着设置mPhone and mForegroundCall/mBackgroundCall/mRingingCall。
3.1.4) getBluetoothHandsfree设置蓝牙耳机,如果存在蓝牙耳机,则安装该设备。
3.1.5) initInCallScreen加载各种view组建。
3.1.6) 对通话的各种状态进行广播。(registerForPreciseCallStateChanged,registerForDisconnect,registerForMmiInitiateregisterForMmiComplete,registerForCallWaiting,registerForSuppServiceFailed,registerForCdmaOtaStatusChange)
3.1.7) internalResolveIntent判断是否使用了OTA技术,通过该判断设置通话界面的样式。
3.1.8) callScreenCreated记录通话界面创建完成后的时间
3.2) onNewIntent(非第一次)。
我们重新启动一个Intent时调用该函数。由于我们围绕唯一的一个InCallScreen实例来完成通过的这个过程,那么除了第一次被创建的InCallScreen,只要有来电或者去电,该程序就会发生。如果InCallScreen已经在前台,该程序也会发生。
3.2.1) setIntent保存该Intent,以至于将来我们可以获得该intent。
3.2.2) internalResolveIntent
3.3) onResume
进行一些初始化操作,如:获取一个PhoneApp对象,解开Keyguard Notification的statusBar给Disable。还内置了一个Handler可以回调处理一些事件,比如:PHONE_STATE_CHANGED,PHONE_DISCONNECT,EVENT_HEADSET_PLUG_STATE_CHANGED。同时有一个独立的BroadcastReceiver处理ACTION_HEADSET_PLUG,比如插入耳机等。
3.3.1) 首先对锁屏情况下的来电除了处理。
3.3.2) disableStatusBar当正在通话界面时,使得状态栏可用。
3.3.3) setIgnoreTouchUserActivity忽略通话过程中无意的触碰事件,使得这些无意的触碰不会阻止设备进入休眠。
3.3.4) registerReceiver监听广播
3.3.5) startDialerSession当在前台是,保持一个dialer session。首先判断时候需要播放本地铃声,如果需要,则判断双音多频是否可用,如果可用,则创建一个声音播放器。
3.3.6) isBluetoothAudioConnected做一个是否蓝牙连接的判断。
3.3.7) 如果是cdma通话,则初始化OTA状态,进而如果是采用了OTA,则设置InCallScreenMode为OTA通话模型。
3.3.8) clearDisconnected在检查该通话状态之前,切断其他网络连接。
3.3.9) syncWithPhoneState同步通话界面与Phone的当前状态。如果没有同步成功,则dismissAllDialogs();结束当前的所以通话,endInCallScreenSession();关闭通话界面的显示。
3.3.10) updateWakeState设置基于当前Phone的唤醒状态和屏幕超时,以及通话界面的当前状态。
3.3.11) enableTouchLock当onresume时“触摸锁“叠加是不可见的,尤其是这个检查可确保用户通话按MUNU来唤醒屏幕后将不会被锁。但如果拨号盘是打开的,而又需要通话计时,则造就了“触摸锁“覆盖。
4 Profiler.java
该类对通话各个时间点进行记录。
static long sTimeCallScreenRequested;//通话界面被请求的时间
static long sTimeCallScreenOnC//通话界面被创建的时间
static long sTimeCallScreenC//通话界面创建完成后的时间
static long sTimeIncomingCallPanelRe//正在通话时,通话界面被请求的时间
static long sTimeIncomingCallPanelOnC//正在通话时,通话界面被创建的时间
static long sTimeIncomingCallPanelCr//正在通话时,通话界面创建完成后的时间
5 PhoneUtils.java
负责Phone对象的生成,主要调用phone.getForegroundCall(),phone.getBackgroundCall(),phone.getRingingCall(),phone.dial()。
5.1) placeCall(Phone phone, String number, Uri contactRef)
拨打传入的电话号码,该函数被InCallScreen中的placeCall调用。
参数phone手机对象;参数number用户要拨打的号码;参数contactRef要么是“tel:”,要么是 “content://contacts”,取决于通话初始化,该参数引发呼叫;返回 CALL_STATUS_DIALED,CALL_STATUS_DIALED_MMI,或CALL_STATUS_FAILED。
5.2) placeCallVia(Context context,Phone phone,String number,Uri contactRef,Uri gatewayUri)
使用第三方提供的网关拨打号码,该函数被InCallScreen中的placeCall调用。如果电话号码是紧急号码,GSM MMI码或者CDMA码则不能被呼叫。如果连接成立,这个方法发出一个同步调用阻止查询来电信息,使本地采用异步查询。
参数phone手机对象;参数context执行CallerInfo查询;参数number用户要拨打的号码,如果号码不能建立连接,则仅被用于建立电话卡,并更新通话记录;参数contactRef要么是“tel:”,要么是“content://contacts”,该参数引发呼叫;参数 gatewayUri用于设置连接的地址;返回CALL_STATUS_DIALED或CALL_STATUS_FAILED。
6 PhoneApp.java
该类是一个普通的java类,主要负责Phone对象顶层应用的生成。这是一个虚拟的Phone对象,它从 framework层取得一个Phone对象。该类继承自Application,同时能常驻内存,他和PhoneUtils一起处理电话操作。在 oncreate方法里面进行各种全局的初始化:获取Phone对象 NotificationMgr对象,PowerManager对象,SimCard对象等。同时内置的Handler可以回调处理各种事件,如:EVENT_SIM_ABSENT,EVENT_SIM_NETWORK_LOCKED,EVENT_UPDATE_INCALL_NOTIFICATION
7 CallNotifier.java
监听Phone状态的改变和来自telephony层各种事件,并触发任何有关的UI行为(如开始的铃声和来电的用户界面,打在通话音,更新通知,写呼叫记录条目等)。
7.1) 在构造函数中,实现
mPhone.registerForNewRingingConnection(this, PHONE_NEW_RINGING_CONNECTION, null);
mPhone.registerForPreciseCallStateChanged(this, PHONE_STATE_CHANGED, null);
mPhone.registerForDisconnect(this, PHONE_DISCONNECT, null);
mPhone.registerForUnknownConnection(this, PHONE_UNKNOWN_CONNECTION_APPEARED, null);
另外如果是CDMA通讯类型,还执行:
mPhone.registerForCdmaOtaStatusChange(this, EVENT_OTA_PROVISION_CHANGE, null);
mPhone.registerForCallWaiting(this, PHONE_CDMA_CALL_WAITING, null);
mPhone.registerForDisplayInfo(this, PHONE_STATE_DISPLAYINFO, null);
mPhone.registerForSignalInfo(this, PHONE_STATE_SIGNALINFO, null);
mPhone.registerForInCallVoicePrivacyOn(this, PHONE_ENHANCED_VP_ON, null);
mPhone.registerForInCallVoicePrivacyOff(this, PHONE_ENHANCED_VP_OFF, null);
mPhone.registerForCdmaFwdBurstDtmf(this, PHONE_CDMA_FWD_BURST_DTMF, null);
mPhone.registerForCdmaFwdContDtmfStart(this, PHONE_CDMA_FWD_CONT_DTMF_START, null);
mPhone.registerForCdmaFwdContDtmfStop(this, PHONE_CDMA_FWD_CONT_DTMF_STOP, null);
如果是GSM类型,则执行:
mPhone.registerForRingbackTone(this, PHONE_RINGBACK_TONE, null);
mPhone.registerForResendIncallMute(this, PHONE_RESEND_MUTE, null);
7.2) 整个类由函数handleMessage串起来。
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:50215次
积分:1033
积分:1033
排名:千里之外
原创:49篇
转载:35篇
(6)(1)(2)(1)(2)(4)(1)(1)(2)(11)(1)(1)(1)(3)(1)(1)(1)(1)(1)(1)(1)(1)(12)(20)(8)}

我要回帖

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信