我的Android进阶之旅------&Android【设置】-【语言和输入法】-【语言】列表中找到相应语言所对应的列表项
博客专家
我的Android进阶之旅------&Android【设置】-【语言和输入法】-【语言】列表中找到相应语言所对应的列表项
Android应用开发
&&&&&&&&今天接到一个波兰的客户说有个APP在英文状态下一切运行正常,但是当系统语言切换到波兰语言的时候,程序奔溃了。所以首先我得把系统的语言切换到波兰语,问题是哪个是波兰语呢?&&&&&&&&我还真的不认识哪个列表项代表着波兰语。如下图所示:进入到【设置】-【语言和输入法】-【语言】列表后,我就傻眼了,哪个是波兰语呢?本文将介绍如何在列表中找到相应语言所对应的列表项。(【Settings】-【Language & input】-【Language】)&&&&&&&哪个是波兰语呢?好吧,我只认识 日本语、中文、英语的几项,其他的都不认识,这怎么去找波兰语呢?只好百度了一下,正好百度到了一个表格如下,帮了我这个大忙。&====================================================================================(PS:表格内容摘录于百度文库&& )&LanguageEnglish&NameChinese&NameCodeGBICS&JB&KK???????Arabic(Israel)阿拉伯语(以色列)ar_ILYYYY Arabic(Egypt)阿拉伯语(埃及)ar_EGGD_MNGD_MNGD_MNGD_MN中文Chinese&Simplified&中文简体zh_TWYYYYChinese&Tradition中文繁体zh_CNYYYYChinese中文(香港)zh_HKNNPPNederlandsDutch&(Netherlands)荷兰语nl_NLYYYYDutch&(Netherlands)荷兰语(比利时)nl_BEGD_MNGD_MNGD_MNGD_MNEnglishEnglish(United&States)英语(美国)en_USYYYYEnglish(Australia)英语(澳大利亚)en_AUGD_MNGD_MNGD_MNGD_MNEnglish(Canada)英语(加拿大)en_CAGD_MNGD_MNGD_MNGD_MNEnglish(India)英语(印度)en_INGD_MNGD_MNGD_MNGD_MNEnglish(Ireland)英语(爱尔兰)en_IEGD_MNGD_MNGD_MNGD_MNEnglish(New&Zealand)英语(新西兰)en_NZGD_MNGD_MNGD_MNGD_MNEnglish(Singapore)英语(新加波)en_SGGD_MNGD_MNGD_MNGD_MNEnglish(South&Africa)英语(南非)en_ZAGD_MNGD_MNGD_MNGD_MNEnglish(United&Kingdom)英语(英国)en_GBGD_MNGD_MNGD_MNYFran?aisFrench法语fr_FRYYYYFrench法语(比利时)fr_BEGD_MNGD_MNGD_MNGD_MNFrench法语(加拿大)fr_CAGD_MNGD_MNGD_MNGD_MNFrench法语(瑞士)fr_CHGD_MNGD_MNGD_MNGD_MNDeutschGerman德语de_DEYYYYGerman德语(列支敦斯登)de_LIGD_MNGD_MNGD_MNGD_MNGerman德语(奥地利)de_ATGD_MNGD_MNGD_MNYGerman德语(瑞士)de_CHGD_MNGD_MNGD_MNGD_MNItalianoItalian意大利语it_ITYYYYItalian意大利语(瑞士)it_CHGD_MNGD_MNGD_MNGD_MNProtuguêsPortuguese葡萄牙语(巴西)pt_BRYYYYPortuguese葡萄牙语pt_PTYYYYEspa?olSpanish西班牙语es_ESYYYYSpanish西班牙语(美国)es_USGD_MNGD_MNPY?????Bengali孟加拉语bn_BDYNNNBengali孟加拉语(印度)bn_INYYYYhrvatskiCroatian克罗地亚语hr_HRGD_MNGD_MNPY?e?tinaCzech捷克语cs_CZYYYYDanskDanish丹麦语da_DKGD_MNGD_MNPYελληνικ?Greek希腊语el_GRGD_MNYYY?????Hebrew希伯来语(以色列)he_ILGD_MNGD_MNGD_MNGD_MNHebrew希伯来语(以色列)iw_ILGD_MNGD_MNYY?????Hindi印度语hi_INYYYYMagyarHungarian匈牙利语hu_HUGD_MNYYY Indonesian印度尼西亚语in_IDYYYY日本?の言?Japanese日语ja_JPGD_MNGD_MNPP???Korean韩语(朝鲜语)ko_KRGD_MNGD_MNYYBahasa&MelayuMalay马来语ms_MYYYYY?????Perisan波斯语fa_IRYYYYPolskiPolish波兰语pl_PLGD_MNGD_MNPYrom?naRomanian罗马尼亚语ro_ROGD_MNYYYРусскийRussian俄罗斯语ru_RUYYYYсрпскиSerbian塞尔维亚语sr_RSGD_MNGD_MNPPSvenskaSwedish瑞典语sv_SEGD_MNGD_MNPY???Thai泰语th_THYYYYTürk?eTurkey土耳其语tr_TRYYYY????Urdu乌尔都语ur_PKYYYYti?ng&vi?tVietnamese越南语vi_VNYYYYcataláCatalan加泰隆语(西班牙)ca_ESGD_MNGD_MNPPlatvie?uLatviesu拉脱维亚语lv_LVGD_MNGD_MNPYLietuvi?Lithuanian立陶宛语lt_LTGD_MNGD_MNPYNorsk&bokmalNorwegian挪威语nb_NOGD_MNGD_MNPYSloven?inaslovencina斯洛伐克语sk_SKGD_MNGD_MNPYSloven??ina&Slovenian斯洛文尼亚语sl_SIGD_MNGD_MNPPбългарскиbulgarian保加利亚语bg_BGGD_MNGD_MNPYукра?нськаUkrainian乌克兰语uk_UAGD_MNGD_MNPYTagalog&Filipino菲律宾语tl_PHGD_MNYYYSuomiFinnish芬兰语fi_FIGD_MNGD_MNPYAfrikaansAfrikaans南非语af_ZANGD_MNGD_MNGD_MNRumantschRomansh&罗曼什语(瑞士)rm_CHGD_MNGD_MNGD_MNGD_MN???Burmese(Zawgyi)缅甸语(民间)my_ZGNNPPBurmese(Paduak)缅甸语(官方)my_MMNNYY?????Khmer柬埔寨语km_KHNNYY????Amharic阿姆哈拉语(埃塞俄比亚)am_ETNGD_MNGD_MNGD_MNбеларускаяBelarusian白俄罗斯语be_BYNGD_MNGD_MNGD_MNeestiEstonian爱沙尼亚语et_EENGD_MNPPKiswahiliSwahili斯瓦希里语(坦桑尼亚)sw_TZNGD_MNGD_MNGD_MNisiZuluZulu祖鲁语(南非)zu_ZANGD_MNGD_MNGD_MNaz?rbaycancaAzerbaijani阿塞拜疆语az_AZNNNGD_MN???????Armenian亚美尼亚语(亚美尼亚)hy_AMNNPP???????Georgian格鲁吉亚语(格鲁吉亚)ka_GENNNGD_MN???Laotian老挝语(老挝)lo_LANNNGD_MNМонголMongolian蒙古语mn_MNNNNGD_MN??????Nepali尼泊尔语ne_NPNNNGD_MN?аза?&т?л?Kazakh哈萨克语kk_KZNNPP?????Sinhala僧加罗语(斯里兰卡)si_LKNNNGD_MN&&1、标记“N”表示当前版本不支持;标记“Y”表示mtk、google均支持;标记“GD_MN”表示Google默认支持,MTK不支持。2、对于GD_MN,如果要支持的话,只需翻译mtk新增的部分字串就行。3、如若打开或者添加语言,可以参考如下FAQ,&& 如何打开一种语言:FAQ04326&&4、标记“P”是mtk后面新支持的一些语言,如果要支持,可以通过PMS系统直接申请Patch,ALPS& 支持除民间缅甸语以外所有版本的多国语言(这个PATCH的民间缅甸语只支持KK.MP1 , KK.MP6 , KK.MP7)5、关于民间缅甸语的情况 目前MTK JB3.MP,JB5.MP,JB9.MP,KK.MP1,KK.MP6已经可以支持Zawgyi。如果需要的话可以通过PMS系统申请patch,请按以下操作:1).申请strings patch 和字库PATCH&& JBX:&&&&&&ALPS&&&& &ALPS &&&& &ALPS &&&& &ALPS KK.MP1 , KK.MP6 , KK.MP7ALPS& 3).需要注意的是padauk(my_MM)和zawgyi(my_ZG)不能同时开,只能打开一个.4)如果遇到访问一些缅甸语语网站时出现大量圈圈,可能是该网站是民间缅甸语网站,可以申请这些patch====================================================================================&从上面的表格可以看得出来,波兰语对应的列表项为:Polski,如下图所示:&切换语言后,然后再去找程序奔溃的原因,本文到此结束。&==================================================================================== & 作者:欧阳鹏& 欢迎转载,与人分享是进步的源泉!& 转载请保留原文地址:====================================================================================&
我的热门文章
即使是一小步也想与你分享简单游戏 快乐生活
您当前的位置:
>> >> >>正文
安卓系统50个使用技巧教程
编辑:aikongmeng
来源:安卓中文网
发布时间: 11:18:12
安卓最近两年的发展,现在的用户界面和交互都比较人性化了,但是很多安卓的新用户还是不怎么了解安卓系统手机,现在为大家整理了安卓系统的使用教程,希望可以帮助更多用户更深入的了解和使用好Android系统。这些技巧和秘籍大部分针对目前最主流的Android 2.1系统,不过绝大部分在其他版本的Android系统上同样适用。
1.使用Android电源管理widget
从Android 2.1系统开始内置了一个非常强大的带能源管理widget,通过这个widget你可以快速开启或者关闭Wi-Fi,蓝牙,GPS,同步这些手机耗电大户,还可以方便的设定手机屏幕亮度,长按手机屏幕,就可以在widgets目录选择启用。
2.Android手机拨号屏幕
如果你对手机拨号屏幕功能性有特殊要求,Android绝对会满足你,点击联系人列表里任意一个用户,按手机menu &选项,里面有关于单个联系人的详细设置。
3.为每个联系人定制铃声
可以为女朋友或者家人设置单独的铃声,这样听到铃声就知道谁来***了。设置方法点击联系人列表里任意一个用户,然后就可以设置铃声。
4.不要把手机闹钟(alarm clock)加入进程查杀列表里
这是一个经典的错误,很多用户都喜欢用进程管理程序自动杀掉一些程序以节省电量或者腾出手机内存,不过如果不小心alarm clock进程也杀掉了,后果就是第二天早晨10:30才醒过来惊慌失措的奔向公司。
5.用文件夹组织内容
虽然乔布斯花了很久才决定放开iOS用户通过文件夹组织内容的权限,事实上Android从面世开始就支持这个功能,Android文件夹不但支持放入程序图标,还可以存放通讯录,甚至facebook联系人等信息,长按手机屏幕就可以在桌面建立文件夹。
6.重命名文件夹
建立了文件夹后你可能需要修改它的名称,只需要打开文件夹,长按顶部的名称就可以调出重命名文件夹的窗口。
7.查看系统日期
Android新用户可能觉得查看系统日期有点麻烦,其实只要按住屏幕顶部左上方的提醒栏,就会显示今天的日期,赶快试试吧。
8.挂载你的SD卡
Android系统基于Linux内核,所以使用外部磁盘之前必须要mount挂载后才可以正常使用。使用USB线连接手机和电脑时,手机会提示挂载SD卡,必须点击完成挂载后才可以在SD卡里拷贝或者删除数据。
9.设置键盘快捷方式
很多用户迷恋物理全键盘的另外一个重要原因就是Android支持大量的键盘快捷键,通过快捷键可以快速调用相关程序,可以在系统设置&应用程序&快速启动里设置
10.下载更多Android动态壁纸
Android 2.1开始系统支持的另外一个功能就是动态壁纸,虽然动态壁纸可能会让你的手机耗电量增加,不过却能让你的手机看起来更酷,如果你喜欢耍酷,在Android Market搜索live wallpaper,会有很多动态壁纸等待你选择。
11.快速切换主屏
Android系统一般提供5个主屏,或许你觉得每次滑动手指切换太麻烦,可以按一下home键,然后就可以选择进入特定的主屏,HTC Sense的手机还支持多点触摸调出所有主屏幕供选择。
12.添加一个快速导航键
Android 2.1系统支持用户建立地图导航的快捷方式,选择任意一个导航线路都可以在桌面建立一个快捷菜单,可以在出行前设定好导航的线路,需要时点击快捷菜单节省时间。
13.设置双击屏幕放大的级别
绝大多数不支持多点触摸的Android手机,在使用浏览器浏览网页时都可以通过双击屏幕放大网页内容,而且你还可以在浏览器设置里“默认缩放”选项选择三种放大级别,这样每次使用双击放大时的效果都不同。
14.改变Android浏览器字体
Android手机终端千差万别,不同屏幕和分辨率的手机最佳的浏览字体都不同,只需要在浏览器设置里设置合适的字体大小,就可以提高阅读效率。
15.搜索网页特定内容
在浏览器设置&更多&查找 选项可以用来搜索网页内容里的特定字段,帮助你快速查找相关内容,这也是PC浏览器的标准功能之一。
16.语音输入
Android 2.1系统开始支持语音输入功能,虽然处理起来有些延时,如果你勤加练习还是可以做到基本正确输入,这对练习英语口语的同学也是一条途径。
17.Android字典造词功能
在使用Android键盘输入一个特定词语时,你可以长按它然后选择添加到建议词语区域,这样就可以把这个词加入Android字典,下次输入时只需打入前几个字目就可以调出这个词。
18.同步手机照片到Picasa相册
虽然Google的Picasa网络相册不及Flickr受欢迎。不过Android 2.1的3D相册开始支持自动同步手机照片到Picasa帐户,不需要第三方软件就可以设置同步给了很多用户使用Picasa的理由,不过悲剧的是Picasa在国内无法正常打开,原因大家都懂的。
19.下载网页图片
浏览网页时想保存图片,只要长按图片就可以单独保存,保存的图片可以在相册程序中查看。
20.管理Android通话记录
Android通话记录非常方便,长按任意一条播出或者接入***记录就可以选择删除,非常easy。
21.使用Facebook头像作为通讯录联系人照片
如果你的Android手机***了Facebook官方程序,可以设置自动从Facebook下载头像作为联系人照片。你还可以通过文件夹功能在手机桌面建立一个Facebook通讯录文件夹,区分你的现实世界好友和网络好友。
22.浏览器多功能按钮
Android 2.1浏览器地址栏有一个多功能的按钮,当网页正在载入时,他显示为 "X"用来取消载入,一旦页面载入完成后它会变成书签添加和历史记录管理工具,使用起来非常方便。
23.Android网页浏览历史记录快捷键
打开浏览器长按手机返回键就会调出网页浏览历史记录窗口,比使用菜单调用要方便非常多,浏览器重度使用者必备。
24.使用浏览器“标签页”功能
PC上的浏览器“标签页”已经算是基本功能,Android手机浏览器其实也支持标签页浏览器,只是使用起来稍显复杂:浏览网页时长按一个url就可以选择在新窗口打开,然后使用Menu键,再选择窗口选项查看任意标签页。
25.Android设置过个Gmail帐户
从Android 2.1系统开始支持多帐户设置,打开Gmail程序,通过Menu &帐户&添加帐户 就可以增加一个或者多个gmail帐户,不过目前Android多账户融合做的还不够完美,使用起来会有一些问题。
26.关闭Google建议搜索提速手机
如果你的Android手机是配置不高的入门机型,关闭Google网页搜索建议会大幅提升Google搜索的性能。Google根据你输入的内容提供搜索建议虽然很方便,不过却可能会导致性能不高的手机陷入假死状态。在系统设置 &搜索 &Google搜索设置里可以禁用搜索建议。
27.在手机主屏添加“******”快捷键
虽然你的手机通讯录有成百上千个联系人,但是可能80%以上的通话对象只是其中的几个人。如果把这几个“******”在桌面建立快捷方式,点击一下就可以拨号一定可以节省时间。长按手机屏幕空白,选择添加快捷方式,然后选择直接拨打的联系人就可以在Android手机桌面建立“******”的一键拨号快捷键
28.建立常用网站快捷方式
上面的一条秘籍其实也适合浏览网页。普通情况下即使你把经常访问的网站加入书签,你也需要先打开浏览器,然后在书签管理界面再选中你要访问的那一个。你也可以在书签管理里长按你一条书签然后选择“添加快捷方式”,这样会在手机主屏建立这个网站的快捷方式图标,点击后会自动调用浏览器程序打开网站访问,和一键拨号一样方便。HTC Sense用户也可以使用HTC书签Widget来实现这个功能。
29.建立音乐播放列表快捷方式
又是一条快捷方式的秘籍,同样也可以节省一些时间。在Android音乐播放器界面长按自己创建的音乐播放列表在桌面建立快捷方式,接下来就可以一键播放你最爱的“音乐排行榜”啦
30.跳过Android滑动解锁屏幕
Android手机用户一般都采用滑动解锁屏幕的方式来唤醒手机,不过你可能不知道按两下手机的Menu键也有同样的效果,前提是你的手机制造商没有移除这个功能,很多装载HTC
Sense手机可能无法使用这个特性。
31.快速删除图片
在手机相册程序里删除图片每次都会跳出确认框,这时候按一下Menu键可以不需确认删除所有图片,绝对节约时间。
32.快速输入特殊符号
这是一个一般人都不太注意的技巧,不过如果你是一个重度手机文字输入用户这个功能将非常有用。在使用Android官方屏幕键盘输入时,长按任意一个字符可以调出这个字符对
应的特殊符号,比如长按S可以输入@,长按D可以输入#,这个技巧将大幅度改善你的手机输入速度。
33.更多Android表情
上面一条技巧也适用于Android表情符号输入,长按一种Android微笑表情会调出其他系统的微笑表情符号。
34.别人发给我的表情符号是什么意思
如果你已经老到搞不清楚不同的笑脸表情代表什么,你可以在输入界面按Menu键,选择插入表情符号,然后就可以看到所有Android表情符号以及对应的意思解释。
35.调整Android拼写检查
如果你在使用Android键盘时发现拼写检查功能使用起来不方便,可以在设置 &语言和键盘 &Android键盘里关闭。
36.***一个Android文件管理器
文件管理是Android系统目前最大的一个功能缺失之一,虽然你可以使用Android系统工具完成删除图片或者音乐等操作,但是从Android Market下载一个文件管理软件将让你在
Android手机管理文件和PC上一样高效,目前Android系统最好的文件管理软件是Astro,推荐下载***。
37.管理你的Android电池使用
你可能会突然发现自己的Android手机耗电量急剧上升却又搞不清楚究竟是哪里出了问题。Android系统其实已经手机了电池使用的详细统计。在手机设置菜单 &关于手机 &电池使
用选项可以查看不同Android功能模块使用电池电量的比例,这样你就可以搞清楚哪个程序出了问题,再决定是否要删除。
38.从Android键盘设置键盘
Android的原生键盘输入法还提供一个快捷功能,长按123键可以调出Android输入法的设置选项。
39.快速结束输入
在输入过程中双击空格键,将会自动停止输入甚至加上一个句号。
40.清除手机输入历史
当你想完全清楚手机数据的时候往往会忽略这么一条。别忘了手机设置 &语言和键盘 &用户字典里清楚所有的输入历史。
41.让手机说一口纯真英国腔
你可能发现在使用Google Maps导航的时候英语发音非常奇怪,可以在Menu &设置 &文字转语音 里勾选“时钟使用我的设置”选项,接下来你会发现导航发音变成了一口纯真英国腔,听起来舒服多了。
42.删除那些臃肿的程序
使用不支持APP2SD功能的Android手机的程序狂人们可能经常面临手机内存不足的窘境,需要删除部分应用程序解放空间。在设置 &应用程序 &管理应用程序 界面可以按Menu键按照程序大小排序,优先删除那些占用大量空间的程序。
43.激活扬声器
有时候会碰到接听***时环境太吵杂听不清楚的情况,在通话界面按Menu键然后选择“扬声器”选项,保证不但你能听清,周围人也能听清***那头在说什么。
44.删除和某人的整条短信对话
如果手机短信里隐藏了不可高人的秘密,回家又不想被老婆发现。长按这条短信对话列表,然后选择删除,所有和对方发的短信都会被删除。
45.使用自己的图片做壁纸
拍了一张很棒的风景照,或者想把家人的照片用来作为壁纸,只要长按手机屏幕,选择壁纸,然后选择你想用来做壁纸的图片就可以完成操作,设置壁纸前你甚至可以剪切其中的
一块来作为最终的壁纸图片。
46.Android系统最新运行的程序列表
长按Home键会调出Android系统最近运行的程序列表,如果你刚不小心关闭了一个程序,可以用这个办法再次打开使用。
47.关闭手机动画
Android系统各种动画效果虽然可以让你的手机看起来很酷,不过也会消耗很多电池电量,也会影响手机性能。平时可以在设置 &声音和现实 &动画里关闭相关选项,大不了为其他用户做演示的时候再打开照样可以让别人感到惊艳。
48.Android系统集成进程管理
Android系统其实也有进程查杀的功能,只不过隐藏的非常深。在手机设置 &应用程序 里可以查看正在运行的服务,点击相关进程就可以强行关闭。不过这个功能比起第三方进程管理工具还是不够人性化。
49.设置手机解锁图案
为Android手机设置解锁图案可以增加一点手机的安全性,起码可以防止手机被居心不良的人**,只不过千万不要自己忘记了这个解锁图案,不然后果会很严重。
50.设置手机屏幕充电时不会休眠
如果不是因为耗电的原因让手机屏幕一直不休眠也是一件不错的事情,特别是当你的手机整夜充电的时候可以借助软件让你的手机变身一部电子时钟,既方便随时查看时间还可以充当小夜灯。在系统设置 &应用程序 &开发里勾选“保持唤醒状态”选项开启这个功能
关注安卓中文网官方微信
扫描左侧二维码即可添加安卓中文网官方微信
您也可以在微信上搜索“安卓中文网”或“anzhuozww”,获取更多数码资讯
24小时热点《》系统服务类&&系统级别的Service
我们除了可自己创建服务类之外,还可以使用系统服务类,比如:来电服务类、短信服务类、网络服务类、壁纸服务类、电源服务类等等,接下来我们就介绍一下常用的系统服务类,但是我们并不会将每个类中的所有的功能都介绍一下,只会举一两个典型的用法,至于其他的功能可以随时查阅官方文档,获得系统服务类的方法为Context的如下方法:
getSystemService(Context.TELEPHONY_SERVICE);
其中的TELEPHONY_SERVICE字段是Context为我们提供的常量,返回不同的系统服务可以更改这个字段,上面的这个字段是返回来电服务类
1、网络管理服务&&ConnectivityManager
public class MainActivity extends Activity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//通过getSystemService()方法得到connectionManager这个系统服务类,专门用于管理网络连接
ConnectivityManager connectionManager =
(ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
//用于返回网络信息对象
NetworkInfo networkInfo = connectionManager.getActiveNetworkInfo();
//判定当前的网络是否可用,即网络是否处于连接状态
if(networkInfo != null && networkInfo.isAvailable()){
Toast.makeText(MainActivity.this, "network is available",Toast.LENGTH_SHORT).show();
Toast.makeText(MainActivity.this, "network is unavailable",Toast.LENGTH_SHORT).show();
另外,查询系统的网络状态是需要申明权限的,打开清单文件,添加如下权限:
&uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/&
注:访问可以查看Android系统所有的可声明的权限。
&2、***管理服务类&&TelephonyManager
当有来电时,将***号码记入指定的文件中
public class MonitorPhone extends Activity
TelephonyManager tM
public void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// 取得TelephonyManager对象
tManager = (TelephonyManager)
getSystemService(Context.TELEPHONY_SERVICE);
// 创建一个通话状态***器
PhoneStateListener listener = new PhoneStateListener()
public void onCallStateChanged(int state, String number)
switch (state)
// 无任何状态
case TelephonyManager.CALL_STATE_IDLE:
case TelephonyManager.CALL_STATE_OFFHOOK:
// 来电铃响时
case TelephonyManager.CALL_STATE_RINGING:
OutputStream os = null;
os = openFileOutput("phoneList", MODE_APPEND);
catch (FileNotFoundException e)
e.printStackTrace();
PrintStream ps = new PrintStream(os);
// 将来电号码记录到文件中
ps.println(new Date() + " 来电:" + number);
ps.close();
super.onCallStateChanged(state, number);
// ******通话状态的改变
tManager.listen(listener, PhoneStateListener.LISTEN_CALL_STATE);
配置***手机通话状态权限
&uses-permission android:name="android.permission.READ_PHONE_STATE"/&
&3、短信管理服务&&SmsManager
下面的程序是用来发送短信,这个布局界面非常简单:两个输入文本框,一个用于输入手机号码,一个用于输入短信的内容,还有一个按钮,当我们点击这个按钮的时候就会发送信息,
public class MainActivity extends Activity {
EditText number ,
SmsManager sM
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button send = (Button)findViewById(R.id.sendButton);
final EditText number =(EditText)findViewById(R.id.number);
final EditText content =(EditText)findViewById(R.id.content);
//获取SmsManager
sManager = SmsManager.getDefault();
send.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
PendingIntent pi = PendingIntent.getActivity(MainActivity.this,
0, new Intent(), 0);
//发送信息
sManager.sendTextMessage(number.getText().toString(),
null, content.getText().toString(), pi, null);
Toast.makeText(MainActivity.this, "消息成功送达", 3000).show();
之后需要给这个Activity赋予发送短信的权限
&uses-permission android:name="android.permission.SEND_SMS"/&
4、音频管理服务类&&AudioManager
在程序获得了AudioManager对象之后,接下来就能够调用AudioManager的如下常用的方法来控制手机音频了:
①adjustStreamVolume(int streamType , int direction , int flags)
调整手机指定类型的声音。其中第一个参数streamType是定声音的类型,该参数可接受如下的几个值:
STREAM_ALARM:手机闹铃的声音
STREAM_DTMF:DTMF音调声音
STREAM_MUSIC:手机音乐的声音
STREAM_NOTIFICATION:系统提示音
STREAM_SYSTEM:手机系统的声音
STREAM_RING:手机铃声的声音
STREAM_VOICE_CALL:语音***的声音
第二个参数指定对声音的增大和减少,第三个参数是调整声音时显示的标志,例如指定FLAG_SHPW_UI,则在调整声音的大小的时候将会出现一个显示几秒钟的音量圈
②setMicrophoneMute(boolean on )设置是否让麦克静音
③setMode(int mode )设置声音的模式,可设置值有NORMAL ,RINGTONE、IN_CALL
④setRingerMode(int ringerMode) 设置手机的***铃声模式,可支持一下几种属性值:
RINGER_MODE_NORMAL:正常的手机铃声
RINGER_MODE_SILENT:手机铃声静音
RINGER_MODE_VIBRATE:手机震动
⑤setSpeakerphoneOn(boolean on):设置是否打开扩音器
⑥setStreamMute(int streamType , boolean state)
将手机的指定类型的声音调整为静音,其中的streamType参数与adjustStreamVolume方法中的第一个参数的意义相同。
⑦setStreamVolume(int streamType , int index ,int flags)
直接设置手机的指定类型的音量值。其中第一个参数的意义和上面的那个参数一样
下面就举一个例子,这个例子用来播放音乐,布局中有四个按钮,play用于播放音乐 , up用于增大音量 , down用于减少音量 , 还有一个ToggleButton 开关 mute用于指定是否静音,其中使用了MediaPlayer来播放音乐,
public class MainActivity extends Activity {
Button play , up ,
AudioManager aM
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//获取系统音频服务
aManager = (AudioManager)getSystemService(Service.AUDIO_SERVICE);
play= (Button)findViewById(R.id.play);
up = (Button)findViewById(R.id.up);
down = (Button)findViewById(R.id.down);
mute = (ToggleButton)findViewById(R.id.toggle);
play.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
初始化MediaPlayer对象,准备播放音乐,
其中的R.raw.earth引用的是res资源文件中的一个MP3音频文件,需要在res文件中新建一个名为raw的
文件,在其中放入一个名为earth.mp3的文件即可
MediaPlayer mPlayer = MediaPlayer.create(MainActivity.this, R.raw.earth);
mPlayer.setLooping(true) ;
mPlayer.start();
up.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
aManager.adjustStreamVolume(AudioManager.STREAM_MUSIC,
AudioManager.ADJUST_RAISE, AudioManager.FLAG_SHOW_UI);
down.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
aManager.adjustStreamVolume(AudioManager.STREAM_MUSIC,
AudioManager.ADJUST_LOWER, AudioManager.FLAG_SHOW_UI);
mute.setOnCheckedChangeListener(new OnCheckedChangeListener(){
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
//指定是否需要静音
aManager.setStreamMute(AudioManager.STREAM_MUSIC, isChecked);
&不需要为Activity赋予特殊的权限
5、振动器服务类&&Vibrator
Vibrator的使用比较简单,它只有三个简单的方法来控制手机的震动
①vibrate(long milliseconds):控制手机震动milliseconds毫秒
②vibrate(long [] pattern , int repeat):
指定手机以pattern指定的模式震动,例如:指定pattern为new int [400 , 800 , 1200 , 1600] ,就是指定在400ms 800ms& 1200ms& 1600ms 这些时间点交替启动。关闭手机振动器;其中repeat指定pattern指定的数组的索引,指定对pattern数组中从repeat索引处开始进行震动循环
③cancel( ) :关闭手机震动
实例:当我们点击Activity的界面的时候就引发震动:
public class MainActivity extends Activity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
vibrator = (Vibrator)getSystemService(Service.VIBRATOR_SERVICE);
//重写onTouchEvent方法
public boolean onTouchEvent(MotionEvent event){
Toast.makeText(this, "震动来了", Toast.LENGTH_LONG).show();
vibrator.vibrate(2000);
return super.onTouchEvent(event) ;
public boolean onCreateOptionsMenu(Menu menu) {
// I this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
&6、手机闹钟服务类&&AlarmManager
&1、AlarmManager表面上看起来用途就是开发手机闹钟的,但是它本身是一个全局的定时器,可以设置在指定的时间或者周期中启动其他的组件,包括Activity Service BroadcastReceiver&
2、获取AlarmMannager的方法还是调用getSystemService(),一旦程序获得了这个服务类的对象之后就能够调用如下的方法完成一些功能:
①set(int type , long triggerAtTime , PendingIntent operation)
设定在triggerAtTime时间启动operation参数指定的组件,其中第一个参数指定定时服务类型,该来行可以有如下的参数接受值:
ELAPSED_REALTIME:指定从现在开始过了一定的时间之后启动operation指定的组件
ELAPSED_REALTIME_WAKEUP:指定从现在开始时间过了一定的时间之后启动operation对应的组件,即使系统关机了也会执行
RTC: 指定当系统调用System.currentTimeMillis()方法返回值与triggerAtTime相等时启动operation 对应的组件
RTC_WAKEUP:指定当系统调用System.currentTimeMillis()方法返回值与triggerAtTime相等时启动operation 对应的组件,即使系统关机了也会执行
③setInexactRepeating(int type , long triggerAtTime , long interval , PendingIntent operation)
设置一个非精确的周期任务。例如:每个一个小时启动一次,但是系统并不一定总是在每个小时的开始启动Alarm服务
④setRepeating(int type , long triggerAtTime , long interval , PendingIntent operation)
设置一个周期性执行的定时服务
⑤cancel(PendingIntent operation)
取消定时服务
举例:下面的程序用来开发一个设定闹钟的功能:
AlarmTest.java文件
public class AlarmTest extends Activity
Button setT
AlarmManager aM
Calendar currentTime = Calendar.getInstance();
public void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// 获取程序界面的按钮
setTime = (Button) findViewById(R.id.setTime);
// 获取AlarmManager对象
aManager = (AlarmManager) getSystemService(
Service.ALARM_SERVICE);
// 为&设置闹铃&按钮绑定***器。
setTime.setOnClickListener(new OnClickListener()
public void onClick(View source)
Calendar currentTime = Calendar.getInstance();
// 创建一个TimePickerDialog实例,并把它显示出来。
new TimePickerDialog(AlarmTest.this, 0, // 绑定***器
new TimePickerDialog.OnTimeSetListener()
public void onTimeSet(TimePicker tp,
int hourOfDay, int minute)
// 指定启动AlarmActivity组件
Intent intent = new Intent(AlarmTest.this,
AlarmActivity.class);
// 创建PendingIntent对象
PendingIntent pi = PendingIntent.getActivity(
AlarmTest.this, 0, intent, 0);
Calendar c = Calendar.getInstance();
// 根据用户选择时间来设置Calendar对象
c.set(Calendar.HOUR, hourOfDay);
c.set(Calendar.MINUTE, minute);
// 设置AlarmManager将在Calendar对应的时间启动指定组件
aManager.set(AlarmManager.RTC_WAKEUP,
c.getTimeInMillis(), pi);
// 显示闹铃设置成功的提示信息
Toast.makeText(AlarmTest.this, "闹铃设置成功啦"
, Toast.LENGTH_SHORT).show();
}, currentTime.get(Calendar.HOUR_OF_DAY), currentTime
.get(Calendar.MINUTE), false).show();
AlarmActivity.java文件(注意这个Activity中没有加载任何的布局,只是在时间到达之后显示一个Dialog而已)
public class AlarmActivity extends Activity
MediaPlayer alarmM
public void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
// 加载指定音乐,并为之创建MediaPlayer对象
alarmMusic = MediaPlayer.create(this, R.raw.alarm);
alarmMusic.setLooping(true);
// 播放音乐
alarmMusic.start();
// 创建一个对话框
new AlertDialog.Builder(AlarmActivity.this)
.setTitle("闹钟")
.setMessage("闹钟响了,Go!Go!Go!")
.setPositiveButton("确定", new OnClickListener()
public void onClick(DialogInterface dialog, int which)
// 停止音乐
alarmMusic.stop();
// 结束该Activity
AlarmActivity.this.finish();
}).show();
7、通知服务类&&Notification
1、这个服务类能够在手机的通知栏中显示通知
2、Android3.0 增加了Notification.Builder类,通过该类允许开发者更轻松的创建Notification对象,Notification.Builder提供了如下常用的方法:
setDefaults() 设置通知LED灯, 音乐 、震动等
setAutoCancel() 设置当点击这条通知后,状态栏自动删除通知
setContentTitle() 设置通知标题
setContentText() 设置通知内容
setSmallcon(int) 为通知设置小图标
setLargeIcon(Bitmap)为通知设置大图标
setTick () 设置通知在状态栏的提示文本
setContentIntent() 设置当点击通知后将要启动的程序组件对应的PendingIntent
(注意:由于当我们退出应用时,该应用发出的通知依然会显示在标题栏,并不会因为应用的退出而退出,所以应该使用PendingIntent将Intent包装一下)
3、发送一个消息的步骤非常的简单
首先通过Notification.Builder创建一个Builder对象,
之后通过这个对象的上述的方法设置这个Builder对象的属性值
之后调用Builder对象的build()方法,返回Notification对象
最后通过NotificationManager发送上面创建好的Notification对象
4、下面举一个例子:
在布局文件中仅有两个按钮, 当单击一个按钮的时候就会将一条通知发送出去,当我们点击另一个按钮的时候就会将这条通知取消
public class MainActivity extends Activity {
NotificationM
//用这个变量来唯一的标定一个Notification对象
final static int NOTIFY = 0x123;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
nm = (NotificationManager)getSystemService(Service.NOTIFICATION_SERVICE) ;
public void send(View view){
Intent intent = new Intent(MainActivity.this , OtherActivity.class);
PendingIntent pi = PendingIntent.getActivity(MainActivity.this, 0, intent, 0);
Notification notify =new Notification.Builder(this)
//设置打开通知后, 该标题栏通知自动消失
.setAutoCancel(true)
//设置显示在状态栏中的通知提示信息
.setTicker("有新消息")
//设置通知的图标,注意图片不能够太大,否则不能够正常的显示
.setSmallIcon(R.drawable.picture)
//设置通知内容的标题
.setContentTitle("一条新消息")
//设置通知内容
.setContentText("阿奇从远方发来贺电")
//设置使用系统默认的声音、默认LED灯
//.setDefaults(Notification.DEFAULT_SOUND|Notification.DEFAULT_LIGHTS)
//设置通知的自定义声音
.setSound(Uri.parse("android.resource://com.penglee.notification/"+R.raw.msg))
//设置消息中显示的发送时间
.setWhen(System.currentTimeMillis())
.setShowWhen(true)
//设置是否setWhe指定的显示时间
//设置点击通知将要启动程序的Intent
.setContentIntent(pi)
//返回Notification对象
//发送通知
nm.notify(NOTIFY , notify);
public void del(View view){
nm.cancel(NOTIFY);
5、上面的程序中的setDefault()方法为Notification设置了声音、震动提示、闪光灯等系统级别的属性。该方法的参数能够支持的属性值有:
Notification.DEFAULT_SOUND 使用系统默认的声音
Notification.DEFAULT_VIBRATE 使用系统默认的震动方式
Notification.DEFAULT_LIGHTS& 使用系统默认的闪光灯
Notification.DEFAULT_ALL& 使用默认的声音、震动 、闪光灯
如果不想使用系统默认的属性的话,可以自定义:
setSound(Uri.parse("file:///sdcard/click.mp3")) ;
setVibrate(new long [] {0 , 50 , 100 , 150}) ;
6、注意使用闪关灯和振动器要在Manifest.xml文件中添加权限
&uses-permission android:name="android.permission.FLASHLIGHT"/&
&uses-permission android:name="android.permission.VIBRATE"/&
好了先写到这里吧!以后再补充
阅读(...) 评论()