• 找到并修改 frameworks/base/services/core/java/com/android/server/pm/PackageManagerService.java public void systemReady() { if(isFirstBoot()){ String examplePackageName = "com.android.launcher3"; //...

    找到并修改
    frameworks/base/services/core/java/com/android/server/pm/PackageManagerService.java

    public void systemReady() {
    	if(isFirstBoot()){
    	String examplePackageName = "com.android.launcher3"; //请修改为需要设置的package name
    	String exampleActivityName = "com.android.launcher3.Launcher"; //请修改为需要设置的 launcher activity name
    ...
    
    展开全文
  • Android系统定制源码修改 - MTK平台  1.修改开机弹出欢迎使用SIM  \frameworks\base\packages\Keyguard\src\com\mediatek\keyguard\Telephony\KeyguardDialogManager.java

                                         Android系统定制源码修改 -  MTK平台


     1.修改开机弹出欢迎使用SIM

         MTK工程/mediatek/packages/apps/Stk1/src/com/android/stk/StkAppService.java

           (\frameworks\base\packages\Keyguard\src\com\mediatek\keyguard\Telephony\KeyguardDialogManager.java)


           case DISPLAY_TEXT:

    省略...

    //显示SIM卡信息

    launchTextDialog(slotId);

    break;


    2.关闭通知栏通能

    \frameworks\base\core\java\android\app\NotificationManager.java


       /**
         * Post a notification to be shown in the status bar. If a notification with
         * the same id has already been posted by your application and has not yet been canceled, it
         * will be replaced by the updated information.
         *
         * @param id An identifier for this notification unique within your
         *        application.
         * @param notification A {@link Notification} object describing what to show the user. Must not
         *        be null.
         */
        public void notify(int id, Notification notification)
        {
       
    boolean close=false;
        if(close)

       
    {
              notify(null, id, notification);
       
    }
         }


    3.MTK 开机LOGO

    Android内核开机LOGO:logomediatek/custom/common/uboot/logo

    Android系统开机logo:/mediatek/custom/common/lk/logo

    logo_folder:定义在..\mediatek\config\XXXX\ProjectConfig.mk中 BOOT_LOGO=wsvganl


    4.Android frameworks去掉熄屏前先变暗的功能

    设置>显示:这里可以设置自动休眠超时时间。

    当设置为30s时,到24s左右屏幕会先变暗,告知用户屏幕快熄灭了,6s以后才会真正熄屏。


    现在需要去掉这个功能,在PowerManagerService里可以看到:

        private int getScreenDimDurationLocked(int screenOffTimeout) {
            return Math.min(SCREEN_DIM_DURATION,
                    (int)(screenOffTimeout * MAXIMUM_SCREEN_DIM_RATIO));
        }
    

    30S是系统里最短的超时时间,也就是说其他screenOffTimeout乘以0.2是比6要大的,所以就不用考虑了。

    要想去掉DIM这个Feature,直接把SCREEN_DIM_DURATION设为0,这样getScreenDimDurationLocked()的返回值也就是0,这样就不再有屏幕先变暗这个步骤了。

    实测可行。

    (取自:http://blog.csdn.net/zhoumushui/article/details/51443492)

    5.调整Android的默认亮度

    调整手机的默认亮度,我们只需要修改frameworks\base\packages\SettingsProvider\res\values\defaults.xml文件中的def_screen_brightness值。

    如想把手机的默认亮度调整为90%,则

    修改之前

       <integer name="def_screen_brightness">102</integer> 

    修改之后

       <integer name="def_screen_brightness">230</integer> 

    注意全亮是255。因此,255*90=29.5,对29.5取整就是230


     <!-- Default screen brightness, from 0 to 255.  102 is 40%. -->屏蔽掉下拉通知栏和状态栏


    6.屏蔽掉下拉通知栏和状态栏

    ..\frameworks\base\packages\SystemUI\src\com\android\systemui\statusbar\phone\PhoneStatusBarView.java


        @Override
        public void addPanel(PanelView pv) {
            super.addPanel(pv);
    //        if (pv.getId() == R.id.notification_panel) {
    //            mNotificationPanel = pv;
    //        } else if (pv.getId() == R.id.settings_panel){
    //            mSettingsPanel = pv;
    //        }
            pv.setRubberbandingEnabled(!mFullWidthNotifications);
        }


    7.默认配置

    1.gps 默认是打开的,有些产品需要默认关闭,主要是为了省电。

          修改:

                   /frameworks/base/packages/SettingsProvider/res/values/defaults.xml

                 将:

                      <string name="def_location_providers_allowed" tanslatable="false">gps</string>

                     改为:

                     <string name="def_location_providers_allowed" tanslatable="false"></string>

    2.修改系统默认时间。

         修改

              rtc-mt6573.h  cust_rtc.h 这是四个文件,将里面的时间改为自己需要的时间。(这个是我在mtk6573的代码上看到这么修改的,具体在android原生态代码,我还没用看)

    3.修改设备默认名字。

          修改:

             build/tools/buildinfo.sh 在这个文件里面修改,具体修改那些项,我就不在这了说了。

    4.修改系统默认时区及默认语言

           修改:

               build/tools/buildinfo.sh在这个文件的最后一行的前面添加以下代码:

                         echo "persist.sys.language=zh"
                         echo "persist.sys.country=CN"
                         echo "persist.sys.localevar="
                         echo "persist.sys.timezone=Asia/Shanghai"
                         echo "ro.product.locale.language=zh"
                         echo "ro.product.locale.region=CN"

     

    5.修改屏幕默认休眠时间:

       

    在frameworks/base/packages/SettingsProvider/res/values/default.xml


    会看到下面的代码:

    <integer name="def_screen_off_timeout">60000</integer>

    数字的单位是毫秒,可以修改为 10分钟,15分钟,或30分钟。


    6.默认关闭usb debug

    在packages/apps/Provision/src/com/android/provision/DefaultActivity.java

    在这个里面的oncreate方法里面添加:

     Settings.Secure.putInt(getContentResolver(), Settings.Secure.ADB_ENABLED, 0);  /0代表关闭,1代表打开



    7.mtk修改默认字体大小 

    在frameworks/base/core/java/android/content/res/Configuration.java

     public void setToDefaults()里面的

    fontScale = 1.10f;    1代表默认的大小,1.10f代表大,1.15代表超大


    8.深度配置

    1. *#06#等关键码判断文件

    SpecialCharSequenceMgr.java

    2.音效
    ControlPanelEffect.java
    3.版本号修改
    bulid/core/build_id.mk
    4.默认墙纸修改
    framework/base/core/res/res/ drawable-nodpi/default_wallpaer.jpg
    5.其他墙纸修改
    package/apps/Launcher2/res/drawable-nodpi/ wallpaper_01.jpg
    6.音频参数调整
    mediatek/custom/commin/cgen/inc/audio/mt6575_phone/audio_volume_custom_default.h
    mediatek/custom/commin/cgen/inc/audio_volume_custom_default.h

    7.机器型号直接修改
    build/tools/buildinfo.sh
    #ro.product.model = 公司内部手机名
    #ro.product.name = 手机正式名称
    #ro.product.device = 采用的设备名称
    #ro.product.board = 采用的处理器
    #ro.build.product = 旧代码,等同于设备名称
    #ro.custom.build.version = 编译版本号

    8.公司基本命令修改
    target_build.sh   usr_build.sh 注意修改相关机型名

    9.主make文件常用配置
         a.  语言
              mediatek/config/ pd715/ProjectConfig.mk
              #MTK_PRODUCT_LOCALES=zh_CN en_US es_ES zh_TW  #什么语言放在前面就是默认什么语言
          b.输入法
              DEFAULT_INPUT_METHOD=com.sohu.inputmethod.sogou.SogouIME
              MTK_LATINIME_SUPPORT = yes#开启yes 搜狗输入法不起作用,开启no搜狗输入法起作用.
              MTK_INPUTMETHOD_PINYINIME_APP = yes#用搜狗输入法,一般no
           c.通话3秒自动屏灭
              CUSTOM_NO_INCALL_SCREEN_OFF = yes
           d.全局宏定义
              AUTO_ADD_GLOBAL_DEFINE_BY_NAME
           e.开关机logo定义目录
              BOOT_LOGO =  pda700
            f.来电归属地
               MTK_PHONE_NUMBER_GEODESCRIPTION = yes
             e.重力传感器
                    MTK_ACCELEROMETER_SUPPORT = yes

    10.常用缺省配置文件
              framework/base/packages/SettingsProvider/res/values/defaults.xml
              a.屏灭时间  def_screen_off_timeout    60000(60s)  -1(永不)
              b.缺省时间格式 time_12_24
              c.背光等级 def_screen_brightness
              d: 屏幕切换 def_accelerometer_rotation

    11.字体,字库更换
    framworks/base/data/fonts/ DroidSansFasllback.ttf

    12.如果现实有误,除字库外需要注意的地方是安卓字型相关解析
    external\harfbuzz\src\ harfbuzz-myanmar.c

    13.蓝牙一般修改
         a .去掉wireless input  
              删除 <category android:name="android.intent.category.LAUNCHER" />
         b.蓝牙设备默认名称修改
              framworks\base\core\jni\Android_bluetooth_common.h
              #define BTMTK_ANDROID_DEFAULT_LOCAL_NAME "ANDROID BT"
          c. buluetooth HostName(蓝牙改名)
              mediateck/config/common/custom.conf
              bluetooth.HostName =  VENERA 907       
      
    14.桌面默认缺省修改
              package/apps/Launcher2/res/ xml_sw600dp/default_workspace.xml
               launcher:packageName=" com.google.android.youtube
               launcher:className=" com.google.android.youtube.HomeActivity"

    15.内存容量大小
               mediatek/build/tools/ptgen/ MT6575/partition_table_MT6575.xls

    16.Music参数位置修改
               packages/apps/MusicFX/src/com/musicfx/ControlPanelEffect.java

    17.铃声修改
              frameworks/base/data/sounds/ AudioPackage2.xml
              指定拷贝方式

    18.全局系统配置
                mediatek/config/ pd700/system.prop
            a.默认时区修改
                persist.sys.timezone = Asia/Shanghai
             b.设置向导默认关闭
                 ro.setupwizard.mode=DISABLED
             c.屏幕分辨率
                 ro.sf.lcd_density=160

    19.开关机动画
             verdor/mediatek/ pd700/artifacts/out/target/product/ pd700/system/media/bootanimation.zip
              verdor/mediatek/ pd700/artifacts/out/target/product/ pd700/system/media/shutanimation.zip

    注意关机动画和关机铃声需要在 system.pro 加入 ro.operator.optr=CUST

    20.开关机铃声
            verdor/mediatek/ pd700/artifacts/out/target/product/ pd700/system/media/bootaudio.mp3
            verdor/mediatek/ pd700/artifacts/out/target/product/ pd700/system/media/shutaudio.mp3
          并确认frameworks/base/core/java/com/android/internal/app/ShutdownThread.java 中 283行 mShutOffAnimation 的初始值为true

    21.缺省提示/闹钟/ring铃声
         build/target/product/core.mk
       ro.config.notification_sound= Proxima.ogg \ 
        ro.config.alarm_alert= Alarm_Classic.ogg \ 
        ro.config.ringtone= Elves.mid

    22.工程指令修改等
       mediatek/packages/apps/EngineerMode/src/com/mediatek/engineermode/EngineerModeRecevier.java
       mediatek/packages/apps/FactoryMode/src/com/mediatek/factorymode/FactorymodeReceiver.java

    23.输入法布局相关修改
        package/inputmethods/LatinIME/java/res/下
         
    24.WAP相关
         a.wap主页不显示导航以及yahoobookmark
              packages/apps/Bcore\mt_devs.c
    开启宏 CONFIG_MTK_USB_UNIQUE_SERIALrowser/src/com/android/browser/BrowserFeatureOption.java

    25.uboot logo
              mediatek\custom\common\lk\logo\ pda700_wsvga\pda700_wsvga_kernel.bmp
    (./mk r dr  >> system.img) 
              mediatek\custom\common\lk\logo\ pda700_wsvga\pda700_wsvga_uboot.bmp
    (./mk uboot >> logo.bin) 

    26.开机默认时间
    framework/base/services/java/com/android/server/NetworkTimeUpdateService.java //自动校时修改
    cust_rtc.h 
    rtc-mt6575.h(跟平台对应文件)文件中 

    27.手机唯一SN显示
         mediatek\platform\mt6577\kernel\

    28.默认字体大小
         frameworks\base\core\java\android\content\res\Configuration.java
         public void setToDefaults()
         fontScale = 1.10f; 1代表默认的大小,1.10f代表大,1.15代表超大// 不一定,高分辨率0.9是normal
         在/system/build.prop文件里面加入


         ro.sys.def_font_scale = ?(值可以设置成如:100, 130)

         PS:ro.sys.def_font_scale = 130,即fontScale = 1.3时,相应的字体大小为“大”。 

    Settings中系统的字体大小,在/packages/apps/Settings/res/values/arrays.xml 或者 values-sw600dp等文件中的  
    arrays.xml ”entryvalues_font_size”这个tag中分别有定义对应的数值,  
    Small:0.9    
    Normal:1.0  
    Large:1.1  
    Extra Large:1.15   

    600dp不同

    29.plmn
       mediatek\frameworks\base\telephony\etc\spn-conf.xml

    30.时间格式修改
    frameworks\base\core\res\res\values\donottranslate-cldr.xml 
    <string name="numeric_date_format">M/d/yyyy</string> //不同语言不同目录,不同格式 

    31.默认音量修改
    frameworks\base\media\java\android \media\AudioManager.java
    修改DEFAULT_STREAM_VOLUME 数组 

    32.pa修改( modem 
    mediatek\custom\common\modem下目录
    ProjectConfig.mk内指定目录 如 CUSTOM_MODEM=pd775_hspa

    33. 修改移动数据开关默认状态

    \frameworks\base\services\java\com\android\server\ConnectivityService.java
      public boolean getMobileDataEnabled() {
            enforceAccessPermission();
            boolean retVal = Settings.Secure.getInt(mContext.getContentResolver(),
                  //  Settings.Secure.MOBILE_DATA, 1) == 1;//数据开关默认打开
                  Settings.Secure.MOBILE_DATA, 0) == 1; //add by boardcon 数据开关默认关闭
            if (DBG) Slog.d(TAG, "getMobileDataEnabled returning " + retVal);
            return retVal;
        } 

    mtk只需要修改make,MTK_DEFAULT_DATA_OFF=yes

    34.分区修改

      A 修改分区文件mediatek\build\tools\ptgen\partition_table.xls

      B 修改分区头文件mediatek\custom\project\common\partition_define.h


    35. 默认照片修改,驱动层修改无效?原因未知
    packages\apps\Camera\src\com\android\camera\CameraSetting.java
    initialCameraPictureSize 函数中
    修改为
    if(candidate.equals("640x480"))
       {
                     SharedPreferences.Editor editor = ComboPreferences
                          .get(context).edit();
                    editor.putString(KEY_PICTURE_SIZE, candidate);
                    editor.apply();
                    return;
        } 
     
    36.logo
    mediatek\custom\common\uboot\logo\ 

    37.版本号时间自动按时间生成方法
    echo "ro.custom.build.version=P730-G-tab-4G-`date +%Y%m%d-%H:%M`" 

    38. android 如何修改MTP在PC端显示的制造商信息
    1. 修改build/tools/buildinfo.sh中的 ro.product.manufacturer
    2.frameworks\av\media\mtp\MtpServer.cpp 的doGetDeviceInfo()
    property_get("ro.product.manufacturer", prop_value, "unknown manufacturer");
    string.set(prop_value);
    修改此处的prop_value

    39. 72 factory mode 字体变大问题

    此现象只在6572平板项目中,非平板是正常的。。
    修改了font.mk中
    ifeq ($(LCM_WIDTH),800)
            LOCAL_CFLAGS += -DFEATURE_FTM_FONT_24x44
    改成
              LOCAL_CFLAGS += -DFEATURE_FTM_FONT_16x28
    即可,如果想方便平板和非平板的维护,加个平板控制宏就好 

    40. 72开关机动画
    mediatek/operator/OP02/prebuilt/bootanim/bootanimation

      ??

    41.修改按键唤醒配置
    mediatek/config/m709/mtk-kpd.kl

    42. exif
    照片信息里面加入的头文件信息
    extractExifInfo 

    43.默认动态壁纸
    framework/base/core/res/res/values/config.xml
    原来:
    <string name="default_wallpaper_component">@null</string>  
    现在:
    <string name="default_wallpaper_component" translatable="false">com.android.wallpaper/com.android.wallpaper.grass.GrassWallpaper</string>    
    如:
    com.android.wallpaper 在 AndroidManifest 文件中的 packagename,
    com.android.wallpaper.grass.GrassWallpaper 在 AndroidManifest 文件中的 service name
    需要注意的是:静态的图片壁纸和动态壁纸是两个不同的系统,加载的时候是完全两套机制,
    静态图片通过 launcher 里面的一个 xml 文件配置来管理系统默认静态壁纸,
    动态壁纸则是通过 intent 机制向系统搜寻所有匹配 Activity,
    所以,这里的默认值为 null,而不是那个系统默认静态壁纸的地址,系统是读 config.xml 文件的设置。
    若为 null 才继续查找静态壁纸配置内容。设置之后没有效果的话,恢复下出厂设置即可。
    另外将需要用到第三方动态壁纸,提前预置到sytem/app中; 
    44. 第一次开机会走的文件(恢复出厂设置也会走)
    packages/apps/Provision/src/com/android/provision/DefaultActivity.java
    在这个里面的oncreate方法里面添加需要处理第一次开机配置

    45.系统启动默认值修改
    如果想修改系统启动后加载的默认值

    修改SettingsProvider默认值,Settings能够配置Android系统的各种设置,这些设置的默认值都是由frameworks中的SettingsProvider从数据库中读取的,那么第一次开机的时候这些数据都是从哪儿来的呢?

    frameworks/base/packages/SettingsProvider/res/values/defaults.xml

    这个文件就是用来存储Android系统的默认设置

    例如:

    <integername="def_screen_off_timeout">600000</integer>设置关屏超时时间的默认值

    <integername="def_screen_brightness">102</integer>设置亮度的默认值

    <boolname="def_install_non_market_apps">false</bool>设置是否允许安装非Market应用程序的默认值

    如果想定义defaults.xml中没有的,在这里添加后,需修改

    frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java,加入自己的存储代码。




    展开全文
  • 【1、修改默认语言】 以si7537sc_Stylo_k7_M项目为例 修改文件路径在:device/sprd/scx35/sp7731g_1h10/si7537sc.mk 默认语言是里面语言的第一个【2、修改默认时区】 在build/tools/buildinfo.sh脚本里修改默认...

    【1、修改默认语言】
    以si7537sc_Stylo_k7_M项目为例
    修改文件路径在:device/sprd/scx35/sp7731g_1h10/si7537sc.mk 默认语言是里面语言的第一个

    【2、修改默认时区】
    在build/tools/buildinfo.sh脚本里修改默认地区,没有的就在后面添加

    【3、修改开关机动画】
    修改路径:vendor/sprd/partner/prebuilt_apps/boot 在boot目录下有bootanimation.zip和shutdownanimation.zip分别为开关机的包,替换即可,boot下面的boot_res.mk文件是声明开机关机动画和铃声的,同样的开关机铃声在这个makefile文件里修改铃声的引用即可。
    关于bootanimation.zip包的制作:解压bootanimation.zip可以发现里面有三个文件
    –part0
    –part1
    –desc.txt
    part0和part1里面放的都是客户提供的一张张图片。
    接下来,说说bootanimation.zip这个文件的结构。bootanimation里面主要包含一个desc.txt以及N个文件夹。而文件夹里面放着的就是你要的开机动画的图片。decs.txt的作用就是指导系统如何去执行你的开机画面。
    下面继续说说desc.txt这个文档要怎么写。
    先看例子,如果我的开机动画要用到2个文件夹,分别是part1和part2,。。。。我希望开机的时候,先把part1里面的图片都播放一遍,然后再循环播放part2里面的文件,直到进入系统。那么decs.txt文档的内容应该如下:
    302 480 5
    p 1 0 part1
    p 0 0 part2

    就这么多,现在解释一下这些命令吧。
    第一行,320 480是代表你屏幕的分辨率,因为我们的胖6是320*480的,这就不多说了。后面的5是说,5帧每秒,不懂的可以这么理解,5是代表一秒钟播放5张图片。就这么简单。
    第二行,p 1 0 part1。p应该是play吧,也就是播放的意思。1是播放一次。0是空指令,就是什么都不做。part1就是说,这条指令是针对part1这个文件夹的。整条指令的意思就是,播放part1里面的图片1次,然后什么都不做,马上进入下一条指令。
    第三行,p 0 0 part2。p依然是播放。第一个0这里是代表循环播放,第二个0和上面第二条指令一样,代表什么也不做。part2也就不多说了。
    至于为什么第一个0为什么是代表循环,只能这么说,这事国际惯例,就像用迅雷的时候,0代表不限制速度一样,系统规定的,你知道就好,别纠结。

    总结公式如下
    第一条指令:屏幕的分辨率(空格)播放频率
    第二条指令:p(空格)播放次数(空格)后续操作(空格)作用文件夹
    第三条指令:同上
    第N条指令:同上
    屏幕分辨率的格式是:宽(空格)高,胖6的就是320 480。。。播放频率,上面已经说清楚了,至于到底要用多大的数字,视你开机动画的张数而定,比如说,一共有100张图片,开机时间是20秒,那么100/20就是5。
    播放次数,1是代表一次,0代表循环播放。如果要播放2次的话,就是就是打个2上去,应该是这样吧,反正我是没试过,只试过0和1.
    后续操作,0代表什么都不做,直接进入下一条指令。10是代表稍作停顿。

    至于文件夹里面的图片,比较简单,首先,纠正一个说法,之前说必须要是png格式,经过我试验证明,jpg格式的也可以,其他的有待试验,不过只支持静态图片这点应该是真的,动态图片同样有待试验。其次,关于图片的尺寸,是不做要求的,只要在txt文档里写好手机的分辨率即可,开机的时候系统会自动适配。其其次要按播放循序命名,建议用5位数字,比如说,第一张图片是00010,第二张就是00020.。。。。为什么要从00010开始,而不是00001?因为这事预防以后要在第一张和第二张中间再插一张图片进去的话,就可以把插进去的图片命名为00011,在00010之后,00020之前。就这么简单。至于图片那里来嘛,当然是自己网上找啦,也可以下载别人的bootanimation,然后修改一下。

    最后就是压缩包了,把需要用到的part文件夹跟decs.txt打包成zip格式,必须是zip,不能是rar,而且打包的时候压缩方式要选择“存储”模式。然后改名成为bootanimation.zip,复制到SD卡里,再通过RE文件管理器复制到system\media\下面,重启。

    要注意一下,bootanimation不能太大,大了会卡,一般不要超过3M,。

    【4、添加、修改默认壁纸】
    默认壁纸:默认壁纸是在framework/base/core/res/res 目录下,使用命令:find . -name default* 可以看到默认壁纸的引用有下面几处:./drawable-sw720dp-nodpi/default_wallpaper.jpg
    ./drawable-nodpi/default_wallpaper.jpg
    ./drawable-sw600dp-nodpi/default_wallpaper.jpg
    ./drawable-xhdpi/default_wallpaper.jpg
    将上述几个图片都用默认壁纸替换掉就可以了
    注意如果客户是要普通的壁纸中选个当默认壁纸的,不要将默认壁纸添加到Launcher中,这样会造成重复!

    添加普通壁纸:将壁纸放在:Launcher/WallpaperPicker/res/drawable-xhdpi目录下,按照里面的格式改名字,比如同样的壁纸改为wallpaper_00.jpg,wallpaper_00_small.jpg放置两个,具体原因暂时不知道

    【5、增加、删除系统APK】
    内置或者删除APK,系统路径在vendor/sprd/partner/prebuilt_apps下
    zediel的做法是在prebuilt_apps下复制一个文件夹放置第三方应用,文件夹的压缩包在J:\宋志豪\3rdpart.rar,可以复制过来进行解压。
    关于3rdpart这个文件夹,目录结构为:
    –preapp
    –preloadapp
    –prevital-app
    –Android.mk
    –xxx.apk(添加的可卸载的apk)
    –SwipeStore
    –lib
    –Android.mk
    –xxx.apk(添加的不可卸载的apk) 注意,有几个不可卸载的apk ,就重复建几个不可卸载的文件夹,其他都一样重复
    –3rd_part.mk(此makefile文件里主要是调用该目录下apk,.so库的声明)
    –Android.mk

    其中可卸载的APP放置在prevital-app目录下,不可卸载的APP放在SwipeStore目录下

    对于可卸载的apk,直接将apk文件放到prevital-app目录下就行
    对于不可卸载的apk:1、先将apk放到SwipeStore下
    2、然后配置lib文件夹,解压xxx.apk将里面的lib文件夹复制出来替换此lib文件夹 3、配置/SwipeStore/Android.mk。在“LOCAL_MODULE := SwipeStore”名字改成和放置不可卸载的apk文件夹名称一致,在“LOCAL_PREBUILT_JNI_LIBS:= lib/armeabi-v7a/lib18p_market.so”处改为lib文件夹下的.so库的路径

    4、无论卸载或不可卸载的apk都要进行这一步的操作。在device/sprd/scx35_sp7731gea_hdr/device/sprd/scx35_sp7731gea_hdr/sp7731gea_hdr_dt_common.mk文件为总的配置makefile文件,增加一个对3rd_part.mk 的调用
    $(call inherit-product, vendor/sprd/partner/prebuilt_apps/3rdpart/3rd_part.mk)

    删除谷歌源生APK:在vendro/sprd/partner/google/products/gms.mk文件中删除Google的apk调用

    【6、修改DDR、屏型号】
    修改路径:zediel/config/所选的项目/ProjectConfig.mk
    【7、修改默认的输出法】
    以内置百度输入法为例:
    (1)在frameworks/bse/package/SettingsProvider/res/values/
    defaults.xml文件中添加百度输入法com.baidu.input/.ImeServices
    (2)在frameworks/base/packages/SettingsProvider/src/com/android/
    providers/settings/DatabaseHelper.java中的函数loadDefaultHapticSettings里添加
    loadStringSetting(stmt,Settings.Secure.DEFAULT_INPUT_METHOD,R.string.def_input_method);
    【8、音量键的默认音量之修改】
    在frameworks/base/media/java/android/media/AudioManager.java 的DEFAULT_STREAM_VOLUME修改
    public static final int[] DEFAULT_STREAM_VOLUME = new int[] {
    4, // STREAM_VOICE_CALL
    7, // STREAM_SYSTEM
    5, // STREAM_RING
    11, // STREAM_MUSIC
    6, // STREAM_ALARM
    5, // STREAM_NOTIFICATION
    7, // STREAM_BLUETOOTH_SCO
    11, // STREAM_FM
    11, // STREAM_DTMF
    11, // STREAM_TTS
    7 // STREAM_SYSTEM_ENFORCED
    };

    以Music为例,默认值为11 即代表默认值是最大值减4格,
    若再降2格,则11-2=9 ,代码STREAM_MUSIC之DEFAULT_STREAM_VOLUME值由11修正为9
    【9、怎么给应用开启硬件加速功能】
    开启硬件加速功能可以在一定程度上使得整个应用程序运行速度更快。launcher 应用的硬件加速功能是在AndroidManifest.xml中通过android:hardwareAccelerated这个属性指定的。如下所示:

    <application
        android:name="com.android.launcher2.LauncherApplication"
        android:label="@string/application_name"
        android:icon="@drawable/ic_launcher_home"
        android:hardwareAccelerated="@bool/config_hardwareAccelerated"
    

    我们可以在values文件夹的config.xml中配置config_hardwareAccelerated为true即可。如下所示:

    <bool name="config_hardwareAccelerated">true</bool>
    展开全文
  • 想通过修改android源码实现系统root,不知道该如何修改,android系统是4.4.2的? 另外我在网上找资料都说修改su代码进行setuid和setgid就可以了,但是我都是失败的,是我理解错了吗,求大神指教以下,谢谢!
  • 最近一段时间在公司项目开发中,遇到了使用蓝牙进行数据传输,但是还必须要求其中的一个搭载android系统的蓝牙...所以在尝试在应用APP上实现比较困难的情况下,转向了修改android源码实现该功能的方法。 首先我的androi

    最近一段时间在公司项目开发中,遇到了使用蓝牙进行数据传输,但是还必须要求其中的一个搭载android系统的蓝牙设备默认接受所有来进行蓝牙连接的设备。我们知道在如今的android系统中,使用蓝牙进行配对时系统会随机生成的配对码并以对话框的形式展现给用户,让用户来选择是否可以进行配对。所以在尝试在应用APP上实现比较困难的情况下,转向了修改android源码实现该功能的方法。

    首先我的android源码是基于android4.4.2的,蓝牙配对的那个java文件为:BluetoothPairingDialog.java,相应的路径为:CQA31SAndroid_4.4.2\android4.4\packages\apps\Settings\src\com\android\settings\bluetooth。我们打开该文件之后,阅读下该文件的代码,发现其结构也很简单,使用配对码进行配对的执行方法为:第255行的createConfirmationDialog(CachedBluetoothDeviceManager deviceManager)方法,在该方法中系统主要是进行了构建Dialog的过程,而这个Dialog就是要展现给我们的配对确认的Dialog。所以我们只要捕获到该对话框的“配对”或者“取消”按钮,就可以直接的控制系统的配对操作。

    接下来我们先来看看该段源码:

    private void createConfirmationDialog(CachedBluetoothDeviceManager deviceManager) {
    		final AlertController.AlertParams p = mAlertParams;
            p.mIconId = android.R.drawable.ic_dialog_info;
    	    p.mTitle = getString(R.string.bluetooth_pairing_request);
            p.mView = createView(deviceManager);
            p.mPositiveButtonText = getString(R.string.bluetooth_pairing_accept);
            p.mPositiveButtonListener = this;
            p.mNegativeButtonText = getString(R.string.bluetooth_pairing_decline);
            p.mNegativeButtonListener = this;
            setupAlert();
    		
        }


    
    那么我们该怎么捕获到这个Dialog的“配对”或者是“取消”按钮呢?我们知道对于AlertDialog来说,我们可以通过alertDialog.getButton(DialogInterface.BUTTON_POSITIVE);来得到“确认”按钮的实例,然而在该源码处没有出现AlertDialog的实例对象,那我们就没有办法了么?答案当然是否定的!如果我们再深一层去查看下alertDialog.getButton方法就会发现该方法中是这样写的:
    

        /**
         * Gets one of the buttons used in the dialog.
         * <p>
         * If a button does not exist in the dialog, null will be returned.
         * 
         * @param whichButton The identifier of the button that should be returned.
         *            For example, this can be
         *            {@link DialogInterface#BUTTON_POSITIVE}.
         * @return The button from the dialog, or null if a button does not exist.
         */
        public Button getButton(int whichButton) {
            return mAlert.getButton(whichButton);
        }
    而这个mAlert就是AlertController类的实例化对象,这样一来我们就知道如何来实现了:首先在该类中声明两个变量,另外在createConfirmationDialog方法中进行捕获相应按键的Button对象,之后使用该button对象让它自己去触发点击事件就好了,具体代码如下:

    声明2个button变量:

    private Button mPositiveButton;
    private Button mConsentButton;

    在createConfirmationDialog中添加如下代码(仅仅添加了“配对”按钮):

    mPositiveButton=mAlert.getButton(BUTTON_POSITIVE);
    mPositiveButton.performClick();
    之后进行保存,替换到之前的文件,重新编译运行即可。



    取消开机自动锁屏

    设置默认锁屏时间

    相关路径:frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java

    DatabaseHelper文件中找到如下方法片段:

    private void loadSystemSettings(SQLiteDatabase db) {
    loadIntegerSetting(stmt, Settings.System.SCREEN_OFF_TIMEOUT,
          R.integer.def_screen_off_timeout);
    该方法设置了默认屏幕关闭时间,在def_screen_off_timeout中系统设置了6000毫秒,我们要做的就是要将6000改为-1即可

    相应的xml文件路径为:frameworks/base/packages/SettingsProvider/res/values/defaults.xml

    修改如下:

    <integer name="def_screen_off_timeout">-1</integer>
    这样修改的作用就是在开机后会进入一次锁屏,解锁之后就再也不会锁屏了。

    接下里我们来解决开机不锁屏的功能:

    相关路径:frameworks/base/policy/src/com/android/internal/policy/impl/KeyguardViewMediator.java

    在该文件中找到

        /**
         * External apps (like the phone app) can tell us to disable the keygaurd.
         */
        private boolean mExternallyEnabled = true;
    之后将true改为false,保存进行替换,之后重新编译就大功告成了!




    展开全文
  • 我已经成功编译了一次android代码。 现在我修改源码下的dalvik/vm/DvmDex.cpp文件。 根据framework框架图,这明显是属于android运行时层的内容。想要在下次运行模拟器的时候看见 这个改动。从新编译整个源码的...
  • android 所有版本系统代码,google 原版没有任何修改
  • 1 修改Settings/res/xml/dashboard_categories.xml 在需要放置的位置,添加以下代码 <!-- Voice wakeup mode for Iflytek sdk --> <dashboard-tile android:id="@+id/voice_settings" an...

    先上效果图:
    增加一个设置菜单,点击后弹窗进行选择
    在这里插入图片描述

    1 修改Settings/res/xml/dashboard_categories.xml 在需要放置的位置,添加以下代码

    <!-- Voice wakeup mode for Iflytek sdk -->
    <dashboard-tile
        android:id="@+id/voice_settings"
        android:fragment="com.android.settings.RobotSpeechSettings"
        android:icon="@drawable/ic_settings_speech"
        android:title="@string/voice_settings" />
    
    

    android:id 本dashboard-tile的id号
    android:fragment 需要打开的界面所在的类
    android:icon 显示的图标
    android:title 本菜单的标题


    2 添加prefs,这里添加的菜单,不需要lauyout文件,直接使用xml/布局
    新建文件Settings/res/xml/robot_speech_pref.xml,带一个ListPreference

    <?xml version="1.0" encoding="utf-8"?>
    <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
                      xmlns:settings="http://schemas.android.com/apk/res/com.android.settings"
            android:title="@string/voice_settings"
            settings:keywords="@string/voice_settings">
        <ListPreference
            android:key="wakeup_mode_list"
            android:title="@string/voice_wakeup_mode"
            android:entries="@array/wakeup_mode"
            android:entryValues="@array/wakeup_mode"
          />
    </PreferenceScreen>
    
    

    PreferenceScreen:
    android:title 本界面的标题
    settings:keywords 搜索关键字?
    ListPreference:
    android:key 本ListPreference的id
    android:title 标题
    android:entries 选项列表
    android:entryValues 选项列表值


    3 添加选项列表
    在arrays.xml中添加

    <string-array name="wakeup_mode">
      <item>近场模式</item>
      <item>远场模式</item>
    </string-array>
    

    在strings.xml中添加需要的字符串


    4 添加菜单对应的类
    该类继承SettingsPreferenceFragment,实现SharedPreferences.OnSharedPreferenceChangeListener接口,用于监听配置改变
    将xml加载到界面 调用addPreferencesFromResource(R.xml.robot_speech_pref);
    获取保存配置的SharedPreferences speechSP = getPreferenceScreen().getSharedPreferences();
    获取R.xml.robot_speech_pref中的元素,我们需要用到的 mWakeupMode = (ListPreference) findPreference(KEY_WAKEUP_MODE);
    设置该选项值 mWakeupMode.setValueIndex(index);
    设置该选项副标题,或概要 mWakeupMode.setSummary(mWakeupMode.getValue());
    获取当前选项值、概要 String value = mWakeupMode.getValue();
    获取当前索引 int index = mWakeupMode.findIndexOfValue(value);
    注册监听 speechSP.registerOnSharedPreferenceChangeListener(this);
    注销监听 speechSP.unregisterOnSharedPreferenceChangeListener(this);
    可以参考Settings中的时间日期设置 DateTimeSettings.java 的实现

    public class RobotSpeechSettings extends SettingsPreferenceFragment
            implements SharedPreferences.OnSharedPreferenceChangeListener {
        private static final String TAG = RobotSpeechSettings.class.getSimpleName();
        private Context mContext = null;
        private static final String SP_SPEECH_FILE = "robot_speech_file";
        private static final String SP_WAKEUP_MODE_KEY = "robot_wakeup_mode";
        private static SharedPreferences speechSP;
        private static final String KEY_WAKEUP_MODE = "wakeup_mode_list";
        public static final int WAKEUP_MODE_NEAR_FIELD = 0;
        public static final int WAKEUP_MODE_FAR_FIELD = 1;
        private static ListPreference mWakeupMode;
        @Override
        public void onCreate(Bundle icicle) {
            super.onCreate(icicle);
            mContext = this.getActivity();
            addPreferencesFromResource(R.xml.robot_speech_pref);
            init();
        }
        public void init() {
            speechSP = getPreferenceScreen().getSharedPreferences();
            int index = speechSP.getInt(SP_WAKEUP_MODE_KEY, WAKEUP_MODE_FAR_FIELD);
            mWakeupMode = (ListPreference) findPreference(KEY_WAKEUP_MODE);
            mWakeupMode.setValueIndex(index);
            mWakeupMode.setSummary(mWakeupMode.getValue());
        }
        @Override
        public void onResume() {
            super.onResume();
            speechSP.registerOnSharedPreferenceChangeListener(this);
        }
        @Override
        public void onPause() {
            super.onPause();
            speechSP.unregisterOnSharedPreferenceChangeListener(this);
        }
        @Override
        public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
            if (key.equals(KEY_WAKEUP_MODE)) {
                String value = mWakeupMode.getValue();
                int index = mWakeupMode.findIndexOfValue(value);
                mWakeupMode.setSummary(value);
                if (index == WAKEUP_MODE_NEAR_FIELD) {
                    // 设置为近场-唤醒模式, 广播给MainService
                } else if (index == WAKEUP_MODE_FAR_FIELD) {
                    // 设置为远场-唤醒模式, 广播给MainService
                    
                }
                speechSP.edit().putInt(SP_WAKEUP_MODE_KEY, index).apply();
            }
        }
    }
    
    
    展开全文
  • android修改系统时间

    2020-06-06 23:30:33
    Android修改系统时间(应用程序获得系统权限)!!!对你有所帮助
  • Android系统的源代码非常庞大和复杂,我们不能贸然进入,否则很容易在里面迷入方向,进而失去研究它的信心。我们应该在分析它的源代码之前学习好一些理论知识,下面就介绍一些与Android系统相关的资料。 我们知道,...
  • 一直想下载、编译、调试一下Android源码 ,加强对一些framework的理解,搞了好多次,终于可以正常调试了。这里进行一些总结和分享。 Android源码到模拟器运行,主要有的四个步骤: 下载源码 搭建编译环境 准备...
  • 我用的屏幕分辨率是1280x800,原来主板适配的屏幕分辨率为1024x768,所以需要更改安卓系统的分辨率和dpi值1....注意:修改一些配置项,重新编译安卓源码有可能会忽略而不编译,用touch更新配置文...
  • 修改为 gps,network 或者 network 或者 是否支持gps \frameworks\base\services\core\java\com\android\server\location\GpsLocationProvider.java ro.wisky.gpssupport 此值设为 false 时不支持,则系统中一些有关...
  • 初步修改android代码

    2012-05-18 20:39:57
    工作两个多月,谈谈修改android代码的感受。 之前没有接触过android,开始一个月学习下java,android,git,基础性知识,大学没有好好学,就现学了,真的很感谢我的公司给我一个机会。 1.首先:学会看懂...
  • 2.该APK具有系统权限 3.能够指定一个全局的依赖于LOCAL_BUILT_MODULE的中间目标 #把该Makefile所在的目录设定为当前目录 LOCAL_PATH := $(call my-dir) #清除编译规则模板使用的变量的值。在./build/core/clear_vars...
  • 一 : 修改Android系统默认时间 源码路径:frameworks/base/services/java/com/android/server/SystemServer.java 主要变量EARLIEST_SUPPORTED_TIME // The earliest supported time. We pick one day into 1970...
  • 一 : 修改Android系统默认时间 源码路径:frameworks/base/services/java/com/android/server/SystemServer.java 主要变量EARLIEST_SUPPORTED_TIME // The earliest supported time. We pick one day into ...
  • 1.修改系统滑动锁(我要去掉锁屏界面) sudo vim /home/smile/open_src/android/mbx/frameworks/policies/base/phone/com/android/internal/policy/impl/KeyguardViewM
  • 修改Android系统横竖屏

    2018-01-16 13:57:47
    最近突然说开始一个新项目,该项目是竖屏的,做车机的同学都知道,一般默认都是横屏的,就像平板一样,所以需要修改整个安卓系统默认显示为竖屏,记录一下,仅供参考 关于修改整个系统为竖屏机,主要有三个地方需要修改: ...
  • 相信很多人看到过Android手机或平板显示XXXX-01-01这个奇怪的日期,没错,这就是Android设备的默认日期。当Android设备没有联网,无法获取当前真实时间的时候,就会使用系统默认时间。大部分时候,系统默认时间是...
1 2 3 4 5 ... 20
收藏数 199,438
精华内容 79,775