android4.4简单摘要

来源:互联网 发布:hadoop 数据清洗工具 编辑:程序博客网 时间:2024/06/05 22:39


-------------------------------------------------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_mediaPRODUCT_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;    }}}

-------------------------------------------------------------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是当前分支项目中子板级特定的资源指定文件名称。


-------------------------------------------------------------next----------------------------------------------------------------------------------

.....