Android 系统默认参数的修改之系列(一)

一般在新项目开始之初,我们需要针对客户需求进行各种系统默认属性的配置,通常这些属性都是通过build.prop、settings.db 、default.xml、一些功能package下的 config.xml 等来进行初始化配置的。

那么,要满足客户的定制需求,对于我们开发者来说,修改SettingsProvider默认值,而第一次开机时,用来填充settings.db的数据都是从frameworks/base/packages/SettingsProvider/res/values/defaults.xml 这个文件来读取的。所以大部分的系统属性都是通过修改此处的xml节点来修改的。当然有一些属性是在device下的project.mk中去修改使其编译时添加到build.prop中去。

接下来,我将从我所参与过的项目中,去一点点的记录需要修改的属性都怎么设置。


对于Android手机ODM界的朋友,通读这篇文章后,基本上能完成项目前期70%的适配工作(如果是做MTK平台的话,那更好,可以用来控制的宏变量更加丰富)。


1. 去掉“亮度”中的自动调节

第一步、修改frameworks/base/core/res/res/values/config.xml中的

false

第二步、在Marvell1908平台中,没有根据此property来确定“自动”按钮的显示还是隐藏,所以还需在SystemUI中动态确定该CheckBox的显示与否:

BrightnessController.java中添加如下方法

    private void updateAutomaticButton(boolean automatic) {

        android.util.Log.d(TAG, Automatic button aviliable: automatic);

        if(null != mControl) {

            mControl.setAutomaticAvailable(automatic);

        }

    }

在updateMode()中调用该方法:

private void updateMode() {

// … 

else {

            mControl.setChecked(false);

            updateIcon(false );

   }

updateAutomaticButton(mAutomaticAvailable);

}

在ToggleSlider.java中添加接口:

    public void setAutomaticAvailable(boolean autoBrightness) {

        if(null != mToggle) {

            //mToggle.setWidth(autoBrightness 48: 0);

            mToggle.getLayoutParams().width autoBrightness 48: 0;

            mToggle.setOnCheckedChangeListener(autoBrightness this null);

        }

    }

Tip:

不支持光感设备去掉“自动调节亮度”需要考虑 桌面小部件、下拉状态栏、亮度调节Dialog以及第三方apk这四个方面的Icon的显示问题。如果修改boolean property还不能达到效果,就需要考虑第二步。

2. 修改“亮度”的最值、默认值、半暗值

修改frameworks/base/core/res/res/values/config.xml中的

10

255

102

10

3. 修改开机时的默认亮度

修改frameworks/base/packages/SettingsProvider/res/values/defaults.xml中的   

    51

4. 修改开关机铃声

开关机动画相关所在路径是在frameworks/base/cmds/bootanimation/中去操作的(不同平台略有不同);

Android设备的铃声资源都是在frameworks/base/data/sounds中

 

Marvell 平台是在frameworks/base/cmds/bootanimation/BootAudio.cpp

#define USER_BOOTMUSIC_FILE "/data/local/bootupmusic.mp3"

#define SYSTEM_BOOTMUSIC_FILE "/system/media/bootupmusic.mp3"

 

#define USER_SHUTDOWNMUSIC_FILE "/data/local/shutdownmusic.mp3"

#define SYSTEM_SHUTDOWNMUSIC_FILE "/system/media/shutdownmusic.mp3"

用需要替换的开关机铃声overlay 对应的文件 /system/media/bootupmusic.mp3 和 /system/media/shutdownmusic.mp3 即可,注意资源名称要一致,改为对应的bootupmusic.mp3 或者 shutdownmusic.mp3

Qualcomm平台是在frameworks/base/cmds/bootanimation/ bootanimation_main.cpp中

void BootAnimation::playBackgroundMusic(void)

{

    char bootAudioFile[] "/system/media/boot.wav";

   char shutdownAudioFile[] "/system/media/shutdown.wav";

// … 

}

需要将替换的资源overlay下boot.wav shutdown.wav 注意名称一致,格式也必须一致。或者直接修改这里的cpp代码。

5. 修改Android默认壁纸

Overlay掉frameworks/base/core/res/res/drawable-nodpi/ default_wallpaper.jpg即可

6. 编译版本时不生成odex

一般odex化是在4.0以后的版本中有的功能,odex化可以使系统的启动和程序运行速度大大提高,稳定性不变。但是编译时生成odex包会大大增加system.img的体积,不利于ota升级,t卡升级,所以在编译时可以去odex。

需要在.mk文件中添加属性:

#remove odex

DISABLE_DEXPREOPT:=true

7. 修改默认来电铃声、通知铃声

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android 提供了 Canvas 和 Paint 两个类,可用于绘制 2D 图形。在绘制正弦函数图时,需要使用 Canvas 绘制坐标系和曲线,使用 Paint 设置线条颜色和宽度。 首先,在 XML 文件中定义一个自定义 view: ```xml <com.example.sinewave.view.SinWaveView android:layout_width="match_parent" android:layout_height="match_parent" /> ``` 然后,在 SinWaveView 的 onDraw() 方法中实现绘制: ```java public class SinWaveView extends View { private Paint mPaint; private Path mPath; private int mWidth; private int mHeight; private float mMinX; private float mMaxX; private float mUnitX; private float mAmplitude; private float mFrequency; private float mPhase; public SinWaveView(Context context) { super(context); init(context); } public SinWaveView(Context context, AttributeSet attrs) { super(context, attrs); init(context); } private void init(Context context) { mPaint = new Paint(); mPath = new Path(); mWidth = getWidth(); mHeight = getHeight(); mMinX = 0; mMaxX = 4 * (float) Math.PI; mUnitX = (mMaxX - mMinX) / mWidth; mAmplitude = mHeight / 4; mFrequency = 1 / (2 * (float) Math.PI); mPhase = 0; } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); mPaint.setStrokeWidth(5); mPaint.setAntiAlias(true); mPaint.setColor(Color.BLUE); float x = mMinX; float y = (float) (mAmplitude * Math.sin(mFrequency * x - mPhase)) + mHeight / 2; mPath.moveTo(0, y); while (x < mMaxX) { x += mUnitX; y = (float) (mAmplitude * Math.sin(mFrequency * x - mPhase)) + mHeight / 2; mPath.lineTo(x, y); } canvas.drawPath(mPath, mPaint); } } ``` 在 SinWaveView 的构造函数中,初始化 Paint 和 Path 对象,以及一些绘制用的参数。onDraw() 方法中,设置 Paint 的属性,然后遍历绘制正弦函数图的路径,并使用 drawPath() 方法将其绘制到 Canvas 上。 这样,就可以绘制一段正弦函数图了。可以通过修改绘制用的参数,调整正弦函数图的形态。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值