Chinaunix首页 | 论坛 | 博客
  • 博客访问: 9410370
  • 博文数量: 1748
  • 博客积分: 12961
  • 博客等级: 上将
  • 技术积分: 20070
  • 用 户 组: 普通用户
  • 注册时间: 2009-01-09 11:25
个人简介

偷得浮生半桶水(半日闲), 好记性不如抄下来(烂笔头). 信息爆炸的时代, 学习是一项持续的工作.

文章分类

全部博文(1748)

文章存档

2024年(24)

2023年(26)

2022年(112)

2021年(217)

2020年(157)

2019年(192)

2018年(81)

2017年(78)

2016年(70)

2015年(52)

2014年(40)

2013年(51)

2012年(85)

2011年(45)

2010年(231)

2009年(287)

分类: Android平台

2015-03-21 09:23:46

自动开启wifi
frameworks/base/wifi/java/android/net/wifi/WifiStateTracker.java
方式一:
    /frameworks/base/packages/SettingsProvider/res/values/defaults.xml 直接打开 def_wifi_on = true 选项.
方式二:

点击(此处)折叠或打开

  1. 在onCreate获取wifi服务
  2. wifi_on=(WifiManager)super.getSystemService(Context.WIFI_SERVICE);
  3. 在需要的地方 wifi_on.setWifiEnabled(true);//自动打开WIFI

屏幕永不休眠
./frameworks/base/services/java/com/android/server/power/PowerManagerService.java

点击(此处)折叠或打开

  1. private int getScreenOffTimeoutLocked() {
  2.         int nosleep = mMaximumScreenOffTimeoutFromDeviceAdmin;
  3.         return Math.max(nosleep, mMaximumScreenOffTimeoutFromDeviceAdmin);
  4. /*
  5.         int timeout = mScreenOffTimeoutSetting;
  6.         if (isMaximumScreenOffTimeoutFromDeviceAdminEnforcedLocked()) {
  7.             timeout = Math.min(timeout, mMaximumScreenOffTimeoutFromDeviceAdmin);
  8.         }
  9.         if (mUserActivityTimeoutOverrideFromWindowManager >= 0) {
  10.             timeout = (int)Math.min(timeout, mUserActivityTimeoutOverrideFromWindowManager);
  11.         }

  12.         return Math.max(timeout, MINIMUM_SCREEN_OFF_TIMEOUT);
  13. */
  14.     }
android系统默认语言设置
方式一:
修改out/xxx/default.prop, 添加 

点击(此处)折叠或打开

  1. echo "persist.sys.country=CN"
  2.       echo "persist.sys.language=zh"
  3.     echo "persist.sys.timezone=Asia/Shanghai"
  4.     echo "ro.product.locale.language=zh"
  5.     echo "ro.product.locale.region=CN"


方式二:

只需要对android/build/target/languages_full.mk 中PRODUCT_LOCALES := zh_CN enUS....

最前面的一种语言既为默认语言,系统编译后自动设置属性到系统中,在/build/tools/buildinfo.sh

echo "ro.product.locale.language=$PRODUCT_DEFAULT_LANGUAGE"

echo "ro.product.locale.region=$PRODUCT_DEFAULT_REGION"

echo "persist.sys.country=$PRODUCT_DEFAULT_REGION"
echo "persist.sys.language=$PRODUCT_DEFAULT_LANGUAGE"

这样开机后手机的默认语言就设置成中文了。


ADB 自动开启

在android 4.0 之后,因为adb 的控制,统一使用了persist.sys.usb.config 来控制,于是对应的设置点也改到了frameworks/base/service/...../usb/UsbDeviceManager.java 中,您也可以看到类似的代码如:
public  UsbHandler(Looper looper) {
        // persist.sys.usb.config should never be unset.  But if it is, set it to "adb"
        // so we have a chance of debugging what happened.
         mDefaultFunctions = SystemProperties.get("persist.sys.usb.config", "adb");
        // sanity check the sys.usb.config system property
        // this may be necessary if we crashed while switching USB configurations
        String config = SystemProperties.get("sys.usb.config", "none");
        if (!config.equals(mDefaultFunctions)) {
            Slog.w(TAG, "resetting config to persistent property: " + mDefaultFunctions);
            SystemProperties.set("sys.usb.config", mDefaultFunctions);
        }
        mCurrentFunctions = mDefaultFunctions;
        String state = FileUtils.readTextFile(new File(STATE_PATH), 0, null).trim();
        updateState(state);
        mAdbEnabled = containsFunction(mCurrentFunctions, UsbManager.USB_FUNCTION_ADB);

public void  systemReady() {
 // make sure the ADB_ENABLED setting value matches the current state
    Settings.Secure.putInt(mContentResolver, Settings.Secure.ADB_ENABLED, mAdbEnabled ? 1 : 0);
 
而这个persist.sys.usb.config 中adb 的配置是在alps/build/tools/post_process_props.py 中根据ro.debuggable = 1 or 0 来设置,1 就是开启adb, 0 即关闭adb debug. 而这个ro.debuggable 也是在alps/build/core/main.mk 中设置,和2.3 修改类似
不过您这样打开之后,对于user 版本adb shell 开启的还是shell 权限,而不是root 权限,如果您需要root 权限,需要再改一下system/core/adb/adb.c 里面的should_drop_privileges() 这个函数,在#ifndef ALLOW_ADBD_ROOT 时return 0; 而不是return 1; 即可。


Android定制出厂默认输入法(其他设置类似)


方法一: 
\frameworks\base\packages\SettingsProvider\res\values\defaults.xml 
\frameworks\base\packages\SettingsProvider\src\com\android\providers\settings\DatabaseHelper.java 
设置默认输入法为google拼音 
\frameworks\base\packages\SettingsProvider\res\values\defaults.xml 

    com.android.inputmethod.pinyin/.PinyinIME 

在frameworks\base\core\res\res\values\config.xml 加了

com.android.inputmethod.pinyin/.PinyinIME 之后,

还要在frameworks\base\core\res\res\values\symbols.xml中加上

这样就可以找到com.android.internal.R.string.config_default_input_method了。

  
\frameworks\base\packages\SettingsProvider\src\com\android\providers\settings\DatabaseHelper.java 
loadSecureSettings()中增加一条语句,制定默认使能的输入法  
loadStringSetting(stmt, Settings.Secure.ENABLED_INPUT_METHODS, 
                R.string.config_default_input_method ); 

方法二: 
frameworks\base\core\res\res\values\config.xml 
frameworks\base\services\java\com\android\server \InputMethodManagerService.java 

在 frameworks\base\core\res\res\values\config.xml 添加一个属性: 
    com.android.inputmethod.pinyin/.PinyinIME 

frameworks\base\services\java\com\android\server\InputMethodManagerService.java的方法buildInputMethodListLocked()里添加:    
   String defaultIme = Settings.Secure.getString(mContext 
                .getContentResolver(), Settings.Secure.DEFAULT_INPUT_METHOD); 

        if ( defaultIme == null ) 
        { 
            final Resources res = mContext.getResources(); 
            try 
            { 
                //frameworks\base\core\res\res\values\config.xml 
                String myIME = res.getString( com.android.internal.R.string.config_default_input_method ); 
                if ( myIME != null && myIME.length() > 0 ) 
                { 
                    Settings.Secure.putString( mContext.getContentResolver(), 
                            Settings.Secure.DEFAULT_INPUT_METHOD, 
                            myIME ); 
                } 
            } 
            catch ( Exception e ) 
            { 
            } 
        } 

方法三: 
frameworks/base/package/settingsproviders/res/values/defaults.xml 
在文件frameworks/base/package/settingsproviders/src/com/android/providers/settings/DatabaseHelper.java 

一些系统定制信息是通过 
frameworks/base/package/settingsproviders/res/values/defaults.xml来预设的,在系统首次启动时加载此文件,并应用文件中的设置。文件如下: 
com.sohu.inputmethod.sogou/.SogouIME:com.android.inputmethod.pinyin/.PinyinIME

在文件frameworks/base/package/settingsproviders/src/com/android/providers/settings/DatabaseHelper.java的函数 
loadSecureSettings()中增加一条语句,制定默认使能的输入法  
loadStringSetting(stmt, Settings.Secure.ENABLED_INPUT_METHODS, 

                R.string.def_enabled_input_methods);


设置USB调试出厂时默认打开的方法(4.0以后的版本):

在UsbDeviceManager.java中

String value = SystemProperties.get("persist.service.adb.enable", "");

逻辑判断后加上:

setAdbEnabled(true);



Android 禁止屏幕休眠和锁屏的方法

blog.csdn.net/chenyafei617/article/details/6575621


Introduction

 

常常我们开 发程序的时候我们不需要系统唤醒系统锁屏功能,比如我们在做xxxNowTV或XXX播放器这样的程序,用户有时候在看电视或视频的时候不希望系统的锁屏 功能启动,既不想锁频,然而系统却在我们看电视或者视频的时候出来个锁屏的界面进行锁频拉,我们还要想继续看的话还要去解锁,这样好麻烦,不是我们想要 的,那我们该怎么做呢,其实很简单,我这里只讲其中的两种

 

:我们只要在程序中用代码实现。代码如下:

  1. //方法一
  2. getWindow().setFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON, WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); setContentView(R.layout.main);
  3. //方法二
  4.     @Override
  5.     protected void onResume() {
  6.         super.onResume();
  7.         pManager = ((PowerManager) getSystemService(POWER_SERVICE));
  8.         mWakeLock = pManager.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK
  9.                 | PowerManager.ON_AFTER_RELEASE, TAG);
  10.         mWakeLock.acquire();
  11.     }
  12.       
  13.     @Override
  14.     protected void onPause() {
  15.         super.onPause();
  16.           
  17.         if(null != mWakeLock){
  18.             mWakeLock.release();
  19.         }
  20.     }
  21. //方法三
  22.     public void unLock(){
  23.         mContentResolver = getContentResolver();
  24.         //不建议使用
  25.         //setLockPatternEnabled(android.provider.Settings.System.LOCK_PATTERN_ENABLED,false);
  26.           
  27.         //推荐使用
  28.         setLockPatternEnabled(android.provider.Settings.Secure.LOCK_PATTERN_ENABLED,false);
  29.     }
  30.       
  31.     private void setLockPatternEnabled(String systemSettingKey, boolean enabled) {
  32.          //不建议使用
  33.          //android.provider.Settings.System.putInt(mContentResolver,systemSettingKey, enabled ? 1 : 0);
  34.           
  35.          //推荐使用
  36.          android.provider.Settings.Secure.putInt(mContentResolver, systemSettingKey,enabled ? 1 : 0);
  37.     }
  38.     //但注意要加权限AndroidManifest.xml文件中加入
  39.     //<uses-permission android:name="android.permission.WRITE_SETTINGS" />
  40.     //还要特别注意的是要加入 android:sharedUserId="android.uid.system",但有一个问题,
  41.     //如果加入了sharedUserId后就不能使用eclipse编译了,一定要手动通过 mm -B进行编译,然后把apk install到模拟器或设备中

    



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

可以找到R.integer.def_screen_off_timeout的定义

  1. <integer name="def_screen_off_timeout">60000integer>  

发现默认值为60000ms,也就是60s。我们只需要把这个参数改为-1。然后重新编译SettingsProvider模块,就OK了。



阅读(3008) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~