android4.4简单摘要

目录:

1.内置音乐文件至手机

2.更新nv参数

3.android源码如何客户定制化

4.主流的手机芯片厂商

5.textview自动滚动显示

6.adb push、pull的使用

7.android 布局文件中添加的 android:defaultValue="" 的设计缺陷。

1. ------------------------------------------------- two ways build mp3 files into you phone-------------------------------------------------------------------

方式一:

A:在vendor下添加:

vendor\sprd\sprd_media\internal_media.mk://编译时会自动将文件拷贝到system/preloadmedia下。
vendor\sprd\sprd_media\media\1.mp3

internal_media.mk中的内容为:

LOCAL_PATH:= vendor/sprd/sprd_media

PRODUCT_COPY_FILES += \
	$(LOCAL_PATH)/media/1.mp3:system/preloadmedia/xxx.mp3

当然想编译的时候能执行到该.mk文件,必须将该.mk路径添加到平台的全局.mk文件当中,这里我的全局.make文件路径为:

X:\mocor_sc9820\device\sprd\scx35l\sp9820w_6c10\sp9820w_6c10.mk

将include vendor/sprd/sprd_media/internal_media.mk 添加至sp9820w_6c10.mk当中,这样就能编译执行到了。


方式二:
1.在X:\mocor_sc9820\zrevo\public-binary\packages.xml文件中添加mp3文件拷贝路径。

  <package name="a40_ruiou_inlay_ring">
      <file dst="system/preloadmedia/harer.mp3" src="project/a40/media/harer.mp3" />
  </package>

2.编译系统会找到package name="a40_ruiou_inlay_ring”这个mp3资源路径, 是在当前project中customer_a40_xx02-ruio.cfg中被调用的

[a40_xx02-ruio-ruio]
CUSTOM_SP=BASE
packages=audio_para
wificonnectivity_cfg
bootsound
bootanimation
a40_ruiou_inlay_ring


3.在该路径下X:\mocor_sc9820\zrevo\public-binary\project\a40\media添加mp3原文件。


目前还在熟悉为什么上述两种方法拷贝文件,为什么还需要修改以下代码文件:
在frameworks/base/core/java/android/os/FileUtils.java文件中添加:

public class FileUtils {
 ........
    public static boolean copyFolder(File srcFile, File destFile) {
        if (!srcFile.isDirectory()) {
            return false;
        }
        if (!destFile.exists() && !destFile.mkdirs()) {
            return false;
        }
        boolean result = true;
        File[] list = srcFile.listFiles();
        if (list == null) {
            return result;
        }
        for (File f:list) {
            if (f.isDirectory()) {
                result &= copyFolder (f,new File(destFile,f.getName()));
            } else {
                result &= copyFile(f,new File(destFile,f.getName()));
            }
        }
        return result;
    }
 ........
}

在packages/providers/MediaProvider/src/com/android/providers/media/MediaScannerService.java文件中添加:
 public class MediaScannerService extends Service implements Runnable
{
........
    private static String PRELOAD_SRC = "/system/preloadmedia";
    private static String PRELOAD_FLAG = "mediapreloaded";    
.........
private final class ServiceHandler extends Handler
{
        @Override
        public void handleMessage(Message msg)
        {
            Bundle arguments = (Bundle) msg.obj;
            String filePath = arguments.getString("filepath");
            
            try {
                if (filePath != null) {
                    IBinder binder = arguments.getIBinder("listener");
                    IMediaScannerListener listener = 
                            (binder == null ? null : IMediaScannerListener.Stub.asInterface(binder));
                    Uri uri = null;
                    try {
                        uri = scanFile(filePath, arguments.getString("mimetype"));
                    } catch (Exception e) {
                        Log.e(TAG, "Exception scanning file", e);
                    }
                    if (listener != null) {
                        listener.scanCompleted(filePath, uri);
                    }
                } else {
                    String volume = arguments.getString("volume");
                    String[] directories = null;
                    
                    if (MediaProvider.INTERNAL_VOLUME.equals(volume)) {
                        // scan internal media storage
                        directories = new String[] {
                                Environment.getRootDirectory() + "/media",
                        };
                    } else if (MediaProvider.EXTERNAL_VOLUME.equals(volume)) {
                        // scan external storage volumes
                        /* SPRD: we scan external storage separately @{ */
                        //directories = mExternalStoragePaths;
                        if (!getSharedPreferences(PRELOAD_FLAG, Context.MODE_PRIVATE)
                                .getBoolean(PRELOAD_FLAG, false)) {
                            if (doPreloadMedia(PRELOAD_SRC,
                                    Environment.getInternalStoragePath().getPath())) {
                                getSharedPreferences(PRELOAD_FLAG, Context.MODE_PRIVATE).edit()
                                        .putBoolean(PRELOAD_FLAG, true).commit();
                            }
                        }                        
                        String path = arguments.getString("path");
                        if (path != null) {
                            directories = new String[] {arguments.getString("path")};
                        } else {
                            directories = mExternalStoragePaths;
                        }
                        /* @} */
                    }

                    if (directories != null) {
                        if (true) Log.d(TAG, "start scanning volume " + volume + ": "
                                + Arrays.toString(directories));
                        scan(directories, volume);
                        if (true) Log.d(TAG, "done scanning volume " + volume);
                    }
                }
            } catch (Exception e) {
                Log.e(TAG, "Exception in handleMessage", e);
            }

            //stopSelf(msg.arg1);
        }
    };
    private boolean doPreloadMedia(String src, String dst) {
        if (!android.os.FileUtils.copyFolder(new File(src), new File(dst))) {
            Log.e(TAG, "doPreloadMedia failed");
            return false;
        }
        return true;
    }
}
}

2. ------------------------------------------------------------- updata nv parameters----------------------------------------------------------------------------------

首先清楚一个概念:nv是什么:

      Nv为非易失性数据,从字面意思可以理解作用。比如闹钟时间,设置好后,关机后,应该依然有效,则保存在Nv中。

      Nv里面有射频相关的:包括发射接收等逻辑控制参数,温度补偿,校准参数等。以及音频相关参数Nv是必须保存的

      可变数据,写在flash中。手机IO控制参数、充电耗流等电流控制等等。

其次:android中update了nv_parameter参数,通常会影响到那些功能和性能:

      整机备份升级,开机、驻网、打电话。


最后给单个独立的分支项目update下nv参数:

在android4.4源码workspace文件夹下存在默认的nvitem.bin文件

在zrevo/public-binary/nvitem/nvitem.bin下也存在nvitem.bin文件

如果需要给单独的每个分支或者单独项目配置独立的NV_parameter,目前的做法是:

X:\mocor_sc9820\zrevo\a53a_xx02-ruiou\binary\uk\nvitem\下增加nvitem.bin文件就行。

其中路径中a53a_xx02-ruiou是当前项目分支名称

其中路径中UK是当前分支项目中子板级特定的资源指定文件名称。


3. -------------------------------------------------------------android 源码客户定制化----------------------------------------------------------------------------------

拿4.4整套源码来说吧,一套代码下可能存在多个不同的客户项目,意味着多个人在同一套代码上开发各自的项目,这样的话,如果没有控制好代码

,很大可能出现:时间越长代码越来越乱,到最后可能就根本无法维护,需要浪费大量的不必要的时间。

那如何有效的对代码进行有效的管理呢?

1.在解决一个问题的时候首先应该考虑的是:这个问题或者客户需求是 A:公共的问题  B:单个项目存在的问题。

     公共问题:所有的项目都应该存在或者都有这个新需求,或者说是源码本身存在问题,针对这种情况,要做好的是添加详细的配注信息

                     让别人一看就能懂,不需要添加相关的宏控或者判断条件。

     单个项目存在的问题:只有这个项目有这个新需求,或者只有这个项目存在问题,那我们就需要把它们与公共的代码区分开来,做到不影响其他项目

                     同时看情况,这个项目的该问题或者该需求能否存在兼容性,如果其他的项目也遇到这个需求或问题,能否方便的解决,这也是关键。

2.如何代码定制化呢?

     1.overlay:是常用的一种方式,像平常的开关机动画,铃声,墙纸,音频参数,属性xml文件,基本上所有的功能都可以overlay。

     2.FeatureOption:宏控的方式,但是宏控也考虑两种情况:

     A.项目公共宏,REVO_S_PRJ_MODEL=ITA_Z2312,这个宏可以用来控制该项目单独存在的普通的问题

         级别:项目单独存在的问题。

     B.单独创建一个新的 FeatureOption:如果要解决的问题能看作是一个特定的功能,或大多数项目可能都存在的共性问题,

         那可以考虑单独创建一个 FeatureOption用来独立出来。

         级别:仅仅低于公共问题(系统问题);

     

4.--------------------------------------------------------------------------------主流的手机芯片厂商-----------------------------------------------------------------------------

1.  Qualcomm (美国高通)

2.  Mtk   (台湾联发科)

3.  Samsung exynos(南韩三星猎户座序列)

4.  Apple(苹果)

5.  华为(Hisilicon)

6.  上海展讯


高通主要定位在高端机上面,目前也是市场上用的最多的。Mtk次以高通,主要集中在中国市场上,展讯咱就不说了,低端机没有疑问,2018年之前至少

很多穷的国家就是使用了这个公司的芯片。


5.---------------------------------------------------------------------------简单的让textview过长时自动滚动显示--------------------------------------------------------------

布局文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="vertical"
              android:layout_width="fill_parent"
              android:layout_height="fill_parent"
              android:background="#ffffff"
              android:gravity="center"
        >

    <TextView android:id="@+id/text1"
              android:layout_width="80dp"
              android:layout_height="40dp"
              android:ellipsize="marquee"
              android:marqueeRepeatLimit="marquee_forever"
              android:focusable="true"
              android:scrollHorizontally="true"
              android:focusableInTouchMode="true"
              android:layout_centerInParent="true"
              android:textColor="#0551A5"
              android:layout_marginLeft="20dp"
              android:layout_marginRight="20dp"
              android:singleLine="true"/>
    <!--android:focusable="true"是否获取焦点-->
    <!--focusableInTouchMode:通过触摸获取焦点-->
    <!--android:ellipsize="marquee"设置为跑马灯-->
    <!--android:marqueeRepeatLimit="marquee_forever"滚动次数里面可以直接写数字-->
    <!--marquee_forever表示永远滚动-->
    <!--android:scrollHorizontally="true"水平滚动-->
    <!--android:singleLine="true"单行输入-->

</LinearLayout>

同时代码端需要获取当前textview的id,设置该控件为

//mEmergency_prompt = (TextView) findViewById(R.id.emergency_prompt);

 //mEmergency_prompt.setSelected(true);

----------------------------------------------------------------adb push /adb pull 的作用-------------------------------------------------------------------

首先明白一个概念:adb 是android debug bridge 意思也就是android调试桥。

通过adb想把电脑上的文件复制到手机系统中,就需要用到adb push 命令。

通过adb想把手机系统中的某个文件复制到电脑上,就需要使用adb pull 命令。

这里只说一点:要想能正常push文件到手机系统中,需要获取root权限,指令:adb root,同时需要连接到手机指令:adb remount,

分别给出push 和pull 的使用例子吧:

将电脑本地的framework.jar文件push到system/framework/

adb push "Z:\mocor_sc9820\out\target\product\sp9820w_6c10\system\framework\framework.jar" system/framework/

将手机系统中system/build.prop文件pull到电脑上

adb pull /system/build.prop  c:\Users\Administrator\

注意:push 和 pull 他的/符号 和\符号的使用 刚好相反。

pull的话,我试过,如果要pull成功,需要退出adb shell 状态 才能pull成功。

--------------------------------------------android 布局文件中添加的 android:defaultValue="" 的设计缺陷--------------------------------------------------


---------------------------------------------------------------------------------------------------------------------------------------------------------------------

---------------------------------------------------------------------------------------------------------------------------------------------------------------------

---------------------------------------------------------------------------------------------------------------------------------------------------------------------

---------------------------------------------------------------------------------------------------------------------------------------------------------------------

---------------------------------------------------------------------------------------------------------------------------------------------------------------------

---------------------------------------------------------------------------------------------------------------------------------------------------------------------

---------------------------------------------------------------------------------------------------------------------------------------------------------------------

---------------------------------------------------------------------------------------------------------------------------------------------------------------------







  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
展讯Spreadtrum MocorDroid 4.0.3 编译及客户化配置文档 本文主要介绍 Spreadtrum MocorDroid 4.0.3 编译命令、注意事项以及基于8810 的 4.0.3、 8825的 4.0.3 版本的客户化配置。即使是展讯平台其他的主芯片,也可以通过此文档来熟悉展讯平台的构架。 1. 简介................................................................................................................................................. 7 1.1 综述 .................................................................................................................................................... 7 1.2 基本内容 ............................................................................................................................................ 7 2. 编译环境......................................................................................................................................... 8 2.1 推荐配置 ............................................................................................................................................ 8 2.2 必须软件安装 .................................................................................................................................... 8 3. 获取展讯源码................................................................................................................................. 9 3.1 展讯的代码包目录结构..................................................................................................................... 9 3.2 idh 目录说明 ..................................................................................................................................... 11 3.3 Image 目录说明 ................................................................................................................................ 12 4. Mocordroid4.0.3 支持工程及差异 ............................................................................................. 15 4.1 8825 的 4.0.3 差异说明.................................................................................................................... 15 4.2 8810 的 4.0.3 差异说明.................................................................................................................... 16 5. 代码目录结构介绍 ....................................................................................................................... 17 5.1 整个代码目录结构........................................................................................................................... 17 5.2 客户需要修改配置的目录............................................................................................................... 18 6. 编译命令....................................................................................................................................... 19 6.1 4.0.3 编译系统的变化....................................................................................................................... 19 6.2 编译整个工程的方法....................................................................................................................... 19 6.2.1 lunch 操作................................................................................................................................ 19 6.2.2 choosecombo 操作................................................................................................................... 19 6.2.3 编译命令用法 ........................................................................................................................ 20 6.2.4 编译模块的命令..................................................................................................................... 20 6.3 编译 eng 版本的方法: ................................................................................................................... 21 7. 内核配置....................................................................................................................................... 23 7.1 基于图形界面方式配置内核........................................................................................................... 23 7.2 直接修改 defconfig 文件配置内核 ................................................................................................. 24 8. 客户化配置................................................................................................................................... 25 8.1 PRODUCT 与 DEVICE 的层次结构关系 ....................................................................................... 25 8.2 功能区分的层次与方法................................................................................................................... 27 8.2.1 功能区分层次 ........................................................................................................................ 27 8.2.2 功能区分方法 ........................................................................................................................ 27 8.3 新建项目的实例 .............................................................................................................................. 29 8.4 用 fork 脚本新建工程项目 .............................................................................................................. 32 8.4.1 fork 脚本位置及功能.............................................................................................................. 32 8.4.2 fork 脚本使用举例 .................................................................................................................. 33 9. 各模块配置方法........................................................................................................................... 35 9.1 PINMAP 的客户化配置 ................................................................................................................... 35 9.1.1 8825 的 PINMAP 配置 ........................................................................................................... 35 9.1.2 8810 的 PINMAP 配置 ........................................................................................................... 38 9.2 GPIO 客户化配置 ............................................................................................................................. 41 9.2.1 8825 的 GPIO 配置 ................................................................................................................. 41 9.2.2 8810 的 GPIO 配置 ................................................................................................................. 44 9.3 CLOCK 的客户化配置 ..................................................................................................................... 48 9.3.1 8825 CLOCK 配置 .................................................................................................................. 48 9.3.2 8810 CLOCK 配置 .................................................................................................................. 49 9.4 Regulator—LDO ............................................................................................................................... 52 9.4.1 8825 Regulator—LDO............................................................................................................. 52 9.4.2 8810 Regulator—LDO............................................................................................................. 53 9.5 LCD 客户化配置 .............................................................................................................................. 55 9.5.1 8825 LCD 配置 ....................................................................................................................... 55 9.5.2 8810 LCD 配置 ....................................................................................................................... 58 9.6 TP 客户化配置 .................................................................................................................................. 60 9.6.1 8825 TP 配置 ........................................................................................................................... 60 9.6.2 8810 TP 配置 ........................................................................................................................... 62 9.7 Keypad 客户化配置 .......................................................................................................................... 64 9.7.1 8825 Keypad 配置 ................................................................................................................... 64 9.7.2 8810 Keypad ............................................................................................................................ 66 9.8 G/P/L/M Sensor 客户化配置 ........................................................................................................... 69 9.8.1 8825 G/P/L/M Sensor 配置 ..................................................................................................... 69 9.8.2 8810 G/P/L/M Sensor 配置 ..................................................................................................... 70 9.9 Camera 驱动配置方法 ...................................................................................................................... 72 9.9.1 8825 Camera 配置 ................................................................................................................... 72 9.9.2 8810 Camera 配置 ................................................................................................................... 73 9.10 BT 配置 ........................................................................................................................................... 76 9.10.1 8825 BT 配置 ........................................................................................................................ 76 9.10.2 8810 BT 配置 ........................................................................................................................ 79 9.11 WIFI 配置 ........................................................................................................................................ 84 9.11.1 8825WIFI 配置 ...................................................................................................................... 84 9.11.2 8810 WIFI 配置 ..................................................................................................................... 85 9.12 Audio 配置....................................................................................................................................... 88 9.12.1 音频参数 .............................................................................................................................. 88 9.12.2 修改外部 pa.......................................................................................................................... 88 9.13 DDR 配置 ........................................................................................................................................ 90 9.13.1 U-boot .................................................................................................................................... 90 9.13.2 Kernel..................................................................................................................................... 90 9.14 EMMC 配置 .................................................................................................................................... 91 9.14.1 EMMC 分区表 ...................................................................................................................... 91 9.15 Nand 配置........................................................................................................................................ 92 9.16 SIM 配置 ......................................................................................................................................... 93 10. 应用模块配置方法....................................................................................................................... 94 10.1 多卡多待 客户化配置................................................................................................................... 94 10.2 第三方提供的 APK 客户化配置................................................................................................... 95 10.3 多国语言 客户化配置................................................................................................................... 95 11. 参考网站....................................................................................................................................... 96 11.1 U-Boot.............................................................................................................................................. 96 11.2 Kernel............................................................................................................................................... 96 11.3 Android ............................................................................................................................................ 96

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值