- 博客(32)
- 资源 (8)
- 收藏
- 关注
原创 Android源码开发之在下拉通知栏增加关闭数据连接的对话框
实现这个需求不难,但是在SystemUI/src/com/mediatek/systemui/qs/tiles/MobileDataTile.java里添加个对话框时,点击关闭数据连接会发现弹框被下拉通知栏挡住了,因为下拉通知栏是system dialog,而alertdialog是activity dialog,system的优先级肯定要高些。这时可以在弹框前加一句代码,让下拉通知栏收起来m
2016-02-17 15:26:24 612
原创 android源码开发之短信选择联系人时选择邮箱地址无作用
短信-设置-基本设置-选择联系人时包含邮件地址这个很奇怪,可能是留下的bug,要想这个功能实现,也很简单packages/apps/Mms/src/com/android/mms/ui/ComposeMessageActivity.java----private void addContacts(int pickCount, int requestCode) {----
2015-12-24 21:04:48 596
原创 Android源码开发之小部件定位图标只能在准确度高和耗电量低之间切换
packages/apps/Settings/src/com/android/settings/widget/SettingsAppWidgetProvider.java------ public void requestStateChange(final Context context, final boolean desiredState) {将
2015-12-23 11:51:28 425
原创 Android源码开发之控制开关机铃声
Android的开关机铃声是可以控制的,可以在设置里加个开关,控制开关机铃声的播放。因为涉及到c部分,所以systemprop是最好的选择1.开机铃声的控制frameworks/base/cmds/bootanimation/bootanimation_main.cpp在main函数,找到sePaly标志位char audio[PROPERTY_VALUE_MAX];pro
2015-12-04 11:21:34 2890 3
原创 android源码开发之Camera添加自动对焦ListPreference,camera,key
camera是一个复杂的设计,代码量太大先从添加自动对焦声的例子说起添加keyCamera / res / xml / camera_preferences.xml camera:key="pref_camera_focussound_key" camera:defaultValue="@string/pref_camera
2015-11-28 14:43:02 956
原创 Android源码开发之横屏actionbar的title消失
最近遇到一个bug,虽然看起来简单,实则不是那么回事设置----语言和输入法----个人字典,进去,竖屏的时候actionbar上显示个人字典,但当横屏的时候,title突然消失定位到Setting/src/com/android/settings/inputmethod/UserDictionaryList.java在onResum里 getActivity().g
2015-11-26 14:48:22 1058
原创 Android源码开发之Gallery图片放大倍数
最近遇到一个客户提出的奇葩需求,要求照片无论滑动还是双击,其最大放大倍数都不超过1.5倍,双击的就不说了,很简单,mtkonlne上也有,手指滑动,放大倍数也要不超过1.5倍,查看代码packages/apps/Gallery2/src/com/android/gallery3d/ui/PositionController.java private static final float
2015-11-23 11:12:27 974
原创 Android源码开发之蓝牙通知振动
蓝牙配对,收到文件的时候,都会在通知栏收到一条消息,同时会响一声,在振动模式的时候只会振动,但是在户外模式,即最大铃声与振动的时候却只有铃声没有振动。 mAudioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);Log.i(TAG,"getRingerModeInternal=
2015-11-20 11:31:10 995
原创 Android源码开发之mimeType分享
好久没有分享Android开发的经历了遇到一个小bug,apk分享界面没有蓝牙,这种问题很好解,Bluetooth里本身支持apk类型文件的分享,没有分享,可能是没有在AndroidManifest.xml文件里注册,于是在 android:process="@string/process" android:theme="@android
2015-11-20 11:03:41 741
原创 Android判断gps是否打开
LocationManager lm = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE); boolean gpsEnabled = lm.isProviderEnabled(LocationManager.GPS_PROVIDER);
2015-11-02 14:45:45 1054
原创 Android中发送消息的几种方式
先定义一个handleprivate static Handler handler = new Handler() { @Override public void handleMessage(android.os.Message msg) { if (msg.what == 1) { tex
2015-10-12 10:58:42 1288
原创 Android启动线程的几种方法
提到线程,不得不说一下handle一、Android设计handle的目的 面试中大部分面试官都会问到这个问题,在解决耗时的问题时,我们经常会开启多线程,然而更新UI的时候,只能在UI线程即主线程里操作,这时候就需要引入handle,作为UI线程和其他线程沟通的桥梁。简单来说,Handler的设计实际上是为了应用程序内,其他线程和主线程进行通信。二、start方法启动线程
2015-10-10 11:23:59 1220
原创 深入理解Android的startservice和bindservice
一、Android设计services的目的 1.service运行在后台,得以让我们运行在前台的时候去做一些其他的操作,如后台下载,播放音乐 2.Android系统安全的原因导致了我们在不同的进程间无法使用一般的方式共享数据,我们可以用services的aidl实现共享操作二、startServices 一旦被调用,如果没有程序停止它或者它自己停止,servi
2015-10-08 15:59:16 417
原创 Android源码开发之长按power键添加GlobalActions
应客户需求,开发一个长按power键,弹出截图的菜单,原本按power键只会弹出关机和重启、飞行模式等。1.找到frameworks/base/core/res/res/values/config.xml添加数组 power reboot airplanescreenshot 2.找到framework
2015-10-06 19:27:33 899
原创 Android源码开发之获取当前时间的时分秒
很多时候,由于字库单一,我们需要对时间进行个性化显示,用具体的图片来代替时间数字,首先需要得到当前时间的具体数字//获取当前时间的时分秒Calendar calendar = Calendar.getInstance();int hour = calendar.get(Calendar.HOUR_OF_DAY);int minute = calendar.get(Calendar.
2015-10-06 17:23:28 1084
转载 快速排序java实现
快速排序java实现 快速排序的基本思想: 通过一趟排序将待排序记录分割成独立的两部分,其中一部分记录的关键字均比另一部分关键字小,则分别对这两部分继续进行排序,直到整个序列有序。 先看一下这幅图:把整个序列看做一个数组,把第零个位置看做中轴,和最后一个比,如果比它小交换,比它大不做任何处理;交换了以后再和小的那端
2015-09-22 12:27:33 364
原创 一分钟看懂回调
回调在Android中应用还是比较广泛的,今天来介绍回调1.先定义一个接口public interface CallBack {void execute();}2.回调方法public class TestCallBack{ public void test(CallBackImpl callBack){ long begin = S
2015-09-21 11:29:30 365
原创 Android源码开发之通话计时功能
一开始拿到这个问题,搜了搜资料,网上有一大堆,不过,貌似都没有什么用,都是讲的理论知识,并没有实践。最开始的思路是,监听通话状态的广播,通话开始计时,挂断结束,但这样,又不好区分是主叫还是接听,拨打112等电话可能也被计时,果断放弃了这个。接着,想从calllog入手,通过查询calllog来获取通话时长,不过,如果把通话记录删掉,也是无济于事,况且boss还要求通话计时,即使恢复出厂设置,数据也
2015-09-21 10:58:21 2515 3
原创 android5.0源码开发之NVRam存储,恢复出厂设置数据不被擦除--下篇
这篇,我们来说说上层对NVRam的使用NVRam的存取是以byte的形式进行的 private byte callValue[] = new byte[16];//定义16个字节,用以读取存储两个long型 private long[] callinout = new long[2]; private synchronized void WriteData()
2015-09-19 14:50:35 1954
原创 android5.0源码开发之NVRam存储,恢复出厂设置数据不被擦除--上篇
MTK有一个特殊的存储区域,叫NVRam,这部分存储器用来保存重要的数据,如:校准参数、IMEI写号、FactoryMode等,即使刷机,只要不格式化下载,这些数据还在,恢复出厂设置也不会被擦除。今天就来与大家探讨NVRam的具体用法一、底层,include我都省掉了1.添加idvendor/mediatek/proprietary/custom/xxxx/cgen/inc/Custo
2015-09-19 14:11:58 4671 7
原创 android5.0源码开发之自定义低电量警告AlertDialog
应客户需求,在电量为10,7,5,2的时候,弹出低电量警告框,并且每次弹框,点一下确定就不再弹了。/frameworks/base/packages/SystemUI/src/com/android/systemui/power/PowerUI.java里有个监听电池状态的广播,打log发现,每隔10秒,电池状态会报一次,具体修改如下 AlertDialog mBadWaring
2015-09-19 11:30:39 1359
原创 android源码开发之监听来电状态
在很多时候,我们都需要监听来电状态,然后做一些操作,例如,来电铃声和短信通知音同时响,这时,我们就需要监听来电铃声,如果来电就暂停短信通知音import android.telephony.TelephonyManager;if (TelephonyManager.ACTION_PHONE_STATE_CHANGED.equals(action)){//来电广播
2015-09-18 17:21:42 548
原创 Android源码开发之预制视频音乐等资源
Rom定制,最常见的就是内置客户提供的视频音乐等文件了,并且要求删除后恢复出厂设置资源还在,对于此类问题,貌似MTK也提供了方法,不过mtk给的方法,代码不好管控我们可以把资源随Rom放到手机里,再拷到storage目录里1.在system/media/resource放个android.mk文件,用于拷贝到out的system/media2.每次开机完成的时候,MediaProvid
2015-09-18 14:42:54 1909 1
原创 Android源码开发之来电接听振动
在Dialer模块里增加一个接听振动的菜单选项packages/apps/Dialer/res/xml/general_settings.xml android:key="button_vibrate_in_call" android:title="@string/vibrate_in_call"
2015-09-18 14:07:34 477
原创 android5.0开发之解决灭屏来日程只有声音没有亮屏
对于此类问题,我们可以找到发送通知的地方,然后判断是否有新通知,唤醒并点亮屏幕packages/apps/Calendar/src/com/android/calendar/alerts/AlertService.javastatic boolean isFired = false;//定义标志位void processMessage(Message msg) {---
2015-09-18 13:53:12 419
原创 Android开发之Messenger信使和service实现跨进程
我们经常会遇到进程间的通信,列举几个进程间数据通信的方法1.BroadcastReceiver广播可以携带数据,并且是跨进程通信的,这个大家都很熟悉,用法就不用多说了2.Settings.System这个操作简单,可以存取简单的值,并且跨进程,具体用法如下Long callOutTime = Settings.System.getLong(getContentResolver(
2015-09-18 11:59:43 348
原创 Android源码开发之Fragment之间的跳转
搞Rom定制,通常会遇到从一个fragment跳转到另外一个fragment,例如在lauuncher界面加一个menu菜单,点击会跳转到Settings模块的floatview,而这个floatview是一个fragment第一种思路,先intent跳转到Settings的activity,再用Settings里的方法startPreferencePanel()跳转到指定fragment,问
2015-09-18 11:32:21 1054
原创 Android源码开发之Sqlite3的广泛用途
说到安卓源码开发,不得不提强大的sqlite3工具,user版是没有这个的,编好的eng版本会在out/target/product/xxx/system/xbin生成sqlite3,如果你的user可以root,把sqlite3 push到手机的system/xbin,同样也可以操作。 例如,我现在要默认launcher的第一页布局里的app,需要查询app启动的包名类名。连usb,
2015-09-18 10:35:17 624
原创 Android5.0源码开发之修改Button大小写
在Android L之后的版本中,默认Button字体都是大写,这是因为Button的默认字母大写打开了,如果不想默认大写,可以如此修改Button属性android:textAllCaps="false"
2015-09-18 10:23:24 944
原创 Android SharedPreferences在不同应用模块里通信
Android源码开发,经常会遇到sharedpreference在一个模块写,在另一个模块读的情况,实现起来也很简单在Dialer模块里写 private static final String PREFER_NAME = "share"; private static int MODE = Context.MODE_WORLD_READABLE + Context.MODE_WOR
2015-09-17 20:39:43 572
原创 Android5.0源码开发之launcher切换语言后Folder和ShortcutT没有切换到当前语言
一、桌面快捷方式ShortcutT app的快捷方式一旦生成,info.title都会存到数据库,检测到configuration语言改变时,launcher会重新loadworkspace,这时会从数据库查询info = getShortcutInfo(c, context, iconTypeIndex, iconPackageIndex, iconResourceIndex
2015-09-17 19:44:17 1621
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人