[1]长按power键,下面有四个选项可以选择户外,静音,振动标准四种模式

GlobalActions.java->createDialog():

if (!mHasVibrator) { 
mSilentModeAction = new SilentModeToggleAction(); 
} else { 
mSilentModeAction = new SilentModeTriStateAction(mContext, mAudioManager, mHandler);
}

it seems we use : mSilentModeAction = new SilentModeTriStateAction(mContext, mAudioManager, mHandler);

[2] MONKEY test命令

monkey --ignore-crashes --ignore-timeouts --kill-process-after-error --ignore-security-exceptions --throttle 1500 -v -v -v -s 5 60000000

[3]

IOVDD :I/O supply voltage
VCI:analog supply voltage
VGH / VGL :high / low voltage for gate control signals and gate circuit of panel
VCOM:common voltage of panel

[4]

raw就是平台的isp yuv是sensor的isp,

如果yuv要支持自动对焦的话,会增加成本.

[5]

低温进后摄闪屏AE unstable

[6]

图库进程报错,无法连接到相机的问题,重启电脑就OK

目前这个问题跟高通沟通下来是因为内存不足,导致ISP分配不到内存,而camera有一个守护进程超时导致media server异常,从而camera的相关服务没有正常退出,导致后边再也进不去。

目前内存不足导致的异常我们解决不了,我们现在能做的是想办法退出camera后能重新进入。

camera的接口,在应用里边可以增加一种机制来检测camera是否发生了异常。这种机制的思想是这样的:
camera在预览的时候会有callback上报,应用上注册这个callback:
mCameraDevice.setPreviewCallback(mRawPreviewCallback)
这个callback中有个方法:
 onPreviewFrame
这个方法可以知道有没有preview数据。

就可以根据这个来实现camera的退出。

判断依据是:如果在5秒内这个callback没回来或者回来没有数据,就认为camera异常,应用主动退出。如果在5S内有数据的话就需要重新计时。

还要确认有没有正常情况有没有误触发这个机制的可能。

[7]

1、LCD残影一般是由panel的液晶特性决定的,处于规格以内就好了,如果频繁出现就要查电压了

2、闪烁以及相邻像素之间的互相影响一般是由极性反转的方式不正确导致的

3、造成颜色不正常的因素很多,除了数据位数,RGB的顺序,PCLK的极性之外,PCLK的频率,极性反转的方式都会造成颜色的不正常

4、图像的对比度可以通过调节VCOM/VCOMH/VCOML来实现

5、造成LCD白屏的原因有很多,但根本的原因就是背光亮了但是没有RGB数据过来或者背光亮了PANEL确不能正确显示数据。从这个根本的原因去寻找其他的原因,比如是否正常初始化,是否背光点得太早等等; 另外有时候如果寄存器的延时不够的话也可能造成一定情况下的白屏,尤其是那些启动屏幕,开始数据传输,或者读写之类的寄存器。

6、启动时候的花屏一般可以通过点背光之前的一个清data操作来完成,比如将FB的数据全部写0

7、图像出现上下或者左右不对齐一般是margin的参数不对, 抖动一般是sync的信号不稳定造成的

8、图像出现水波纹类似于抖动闪烁的现象可能跟极性反转有关系,也有可能和gate driver和source driver的电压有关系

9、硬件的时序参数有时候不一定与datasheet上的参数完全匹配,所以一般的开始的时候都让时间稍微长一点,比如reset的时间,数据的设置时间和保持时间等等,调通以后再来优化速度

10、关于LCD背光,一般都有一个偏差,比如说背光偏暖就会使得图像偏黄,如果背光偏冷就会使得图像偏紫。这里补充一点小知识,太阳光的七色光谱红、橙、黄、绿、蓝、靛、紫,红光波长最长为暖色,紫光波长最短偏冷色,色温的单位是K(开尔文),越高就越偏冷,越低就越便暖。色温上的喜好是因人而定的,这跟我们日常看到景物景色有关,例如在接近赤道的人,日常看到的平均色温是在11000K(8000K(黄昏)~17000K(中午)),所以比较喜欢高色温(看起来比较真实),相反的,在纬度较高的地区(平均色温约6000K)的人就比较喜欢低色温的(5600K或6500K),也就是说如果您用一台高色温的电视去表现北极的风景,看起来就感觉偏青;相反的若您用低色温的电视去看亚热带的风情,您会感觉有点偏红, 电视或者显示屏的色温是如何界定的呢?因为在中国的景色一年四季平均色温约在8000K~9500K之间,所以电视台在节目的制作都以观众的色温为9300K去摄影的。但是欧美因为平时的色温和我们有差异,以一年四季的平均色温约6000K为制作的参考的,所以我们再看那些外来的片子时,就会发现5600K~6500K最适合观看。一般来说色温偏低给人的感觉是比较偏暗,比如偏黄给人的感觉就是偏暗,如果偏蓝给人的感觉就是偏亮。

11、几个LCD的光学参数,这里只是粗暴地说说,具体地可以参考一些资料说得很详细。一个就是LCD的亮度参数mcd,m是毫的意思,其实真的参数是cd(坎贝拉),现在手机上的LED一般都是用的1500-1700mcd的。还有一个就是LCD的色度参数,衡量的参数很多,这里只说色度系xyz3坐标,代表红绿蓝,相应的降低就会偏另外一种色,比如说x/y降低就会便蓝,主要用在调颜色的偏差上,和上面的色温是联系在一起的

12、lcd debug的时候有两个很重要的技能,一个是用来debug颜色的问题,刷单色条;还一个就是debug初始化过程的回读函数。刷色条的问题很简单,按照RGB的格式分别在将R、G、B的位上置1就好了;至于回读寄存器,一般datasheet上都有相关的时序,按照时序来读就好了,这里稍微说一下使用GPIO模拟SPI的话只需要将GPIO设成输入然后读寄存器就好了。回读寄存器是必须的debug手段,可以检查数据是否下进去,如果下进去了说明指令本身有问题,如果读出来为全0或者全1之类的就要考虑一数据是否输出?二数据输出了但是确没进panel,有两种可能情况,一种是可能打样没打好,panel和板子的连接没连好,还有一种就是指令的格式不正确

[8]

camera:mclk修改为12M?

{
.seq_type = SENSOR_CLK,
.seq_val = SENSOR_CAM_MCLK,
.config_val = 12000000,
.delay = 5,
},

clock-8610.c:
static struct clk_freq_tbl ftbl_mclk0_1_clk[] = { 
F_MM(12000000, gpll0,10, 1, 5), 
F_MM(24000000, gpll0, 5, 1, 5), 
F_MM(66670000, gpll0, 9, 0, 0), 
F_END, 
};

F = Fsrc / DIV * (m/n)

[9]

进后摄 图库进程报错,无法连接到相机?

因为内存不足,导致ISP分配不到内存,而camera有一个守护进程超时导致media server异常,从而camera的相关服务没有正常退出,导致后边再也进不去

--- a/mm-camera2/media-controller/modules/isp/algo/isp_tintless.c
+++ b/mm-camera2/media-controller/modules/isp/algo/isp_tintless.c
@@ -79,8 +79,9 @@ static void *isp_tintless_main_loop(void *data)
       session->mesh_hw = out_table;
       session->ready_frame_id = thread_data->in_frame_id;
       pthread_mutex_unlock(&thread_data->lock_mutex);
+         }else{^M
+          pthread_mutex_unlock(&thread_data->lock_mutex);^M
     }
-    pthread_mutex_unlock(&thread_data->lock_mutex);
   }
 
   return NULL;

[10]不能用移动卡,请问如何解锁

在adb shell里  smd at+lctunlock

dsatLCvendor.c  modem_proc里的代码

diff --git a/modem_proc/datamodem/interface/atcop/src/dsatLCvendor.c b/modem_proc/datamodem/interface/atcop/src/dsatLCvendor.c
index e3e3117..f8545a2 100644
--- a/modem_proc/datamodem/interface/atcop/src/dsatLCvendor.c
+++ b/modem_proc/datamodem/interface/atcop/src/dsatLCvendor.c

+#ifdef LCT_FEATURE_PLMN_LOCK
+  { "+LCTPLMN", RESTRICTED,
+    SPECIAL_NONE, 0, NULL,     NULL,
+    XXX_exec_lctplmnlock_cmd,    NULL},
+
+  { "+LCTUNLOCK", RESTRICTED,
+    SPECIAL_NONE, 0, NULL,   NULL,
+    XXX_exec_lctplmnlock_clear_cmd,    NULL},
+
+  { "+LCTLP", RESTRICTED,
+    SPECIAL_NONE, 0, NULL,   NULL,
+    XXX_exec_lct_lock_policy_cmd,    NULL},
+#endif
 };

diff --git a/src/com/android/settings/MasterClearConfirm.java b/src/com/android/settings/MasterClearConfirm.java
old mode 100755
new mode 100644
index de48fc9..e07577c
--- a/src/com/android/settings/MasterClearConfirm.java
+++ b/src/com/android/settings/MasterClearConfirm.java
@@ -24,6 +24,7 @@ import android.app.Fragment;
 import android.content.Intent;
 import android.content.res.Resources;
 import android.os.Bundle;
+import android.os.SystemProperties;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
@@ -41,6 +42,8 @@ import java.io.File;
 import java.io.IOException;
 import java.io.FileInputStream;
 import java.io.InputStream;
+import java.lang.Runtime;
+import java.lang.Process;
 import android.widget.Toast;
 import android.content.Intent;
 
@@ -89,6 +92,29 @@ public class MasterClearConfirm extends Activity {
      * and invoke the Checkin Service to reset the device to its factory-default
      * state (rebooting in the process).
      */
+
+    private static void sendCommand(String s) {
+        Log.d(TAG, "send_command()");
+        try{
+            Process proc = Runtime.getRuntime().exec(s);
+            Log.d(TAG, "send command is:" + s);
+            proc.waitFor();
+        }catch(Exception e){
+            e.printStackTrace();
+        }
+    }
+
+    private void enableSimLock() {
+        String device = SystemProperties.get("ro.product.name","");
+        Log.d(TAG, "device name = " + device);
+        if (device.equals("HTC XXX")) {
+            sendCommand("smd AT+XXXUNLOCK");
+            sendCommand("smd AT+XXXPLMN=1,\"20404,46099\"");
+            sendCommand("smd AT+XXXPLMN=3,\"46003\"");
+            sendCommand("smd AT+XXXLP=5");
+        }
+    }
+
     private Button.OnClickListener mFinalClickListener = new Button.OnClickListener() {
 
         public void onClick(View v) {
@@ -102,6 +128,10 @@ public class MasterClearConfirm extends Activity {
             if (am != null) am.clearRtcAlarm();
             // end
 
+
+            enableSimLock();
+
             // format internal storage in {com.android.contacts.storage.StorageFormatterService}
             if (mEraseInternalSdCard) {

[11]

将kernel里的 qcom,mdss-dsi-traffic-mode 修改为 "non_burst_sync_pulse"; uboot的 pinfo->mipi.traffic_mode也要对应修改.。non_burst_sync_pulse对应的是0,1,2哪一个。Mdss_dsi.h (kernel\drivers\video\msm\mdss)

#define DSI_NON_BURST_SYNCH_PULSE 0
#define DSI_NON_BURST_SYNCH_EVENT 1
#define DSI_BURST_MODE   2

[12]
USB接上电脑,显示内部存储卡free:1.36G,但通过手机->设置->存储则发现可用空间为1.56G.
现在往内部存储卡里拷贝一直到free显示0为止,提示已满。 按道理这个时候用手机拍视频,应该提示存储空间不足,但实际上用手机依然可以录一段200M的视频。

frameworks/base/media/java/android/mtp/MtpDevice.java 
Retrieves the {@link MtpStorageInfo} for a storage unit: 
public MtpStorageInfo getStorageInfo(int storageId)

frameworks/base/media/jni/android_mtp_MtpDevice.cpp 
… 
409 {"native_get_device_info", "()Landroid/mtp/MtpDeviceInfo;", 
410 (void *)android_mtp_MtpDevice_get_device_info}, 
411 {"native_get_storage_ids", "()[I", (void *)android_mtp_MtpDevice_get_storage_ids},
412 {"native_get_storage_info", "(I)Landroid/mtp/MtpStorageInfo;", 
413 (void *)android_mtp_MtpDevice_get_storage_info},

android_mtp_MtpDevice_get_storage_info()-> 
MtpStorageInfo* storageInfo = device->getStorageInfo(storageID); ->

frameworks/av/media/mtp/MtpDevice.cpp 
MtpStorageInfo* MtpDevice::getStorageInfo(MtpStorageID storageID) -> 
sendRequest(MTP_OPERATION_GET_STORAGE_INFO))

frameworks/av/media/mtp/MtpServer.cpp 
MtpServer::handleRequest() //处理MTP请求的核心函数 
334 case MTP_OPERATION_GET_STORAGE_INFO: 
335 response = doGetStorageInfo(); 
336 break;

doGetStorageInfo(): 获取剩余空间size: 
mData.putUInt64(storage->getFreeSpace());

-> 
frameworks/av/media/mtp/MtpStorage.cpp 
uint64_t MtpStorage::getFreeSpace(): 
74uint64_t MtpStorage::getFreeSpace() { 
75 struct statfs stat; 
76 if (statfs(getPath(), &stat)) 
77 return -1; 
78 uint64_t freeSpace = (uint64_t)stat.f_bavail * (uint64_t)stat.f_bsize; 
79 return (freeSpace > mReserveSpace ? freeSpace - mReserveSpace : 0); 
80}

You can see there is some space reserved, so i guess on your platform the mReserveSpace is about 200MB.

The reason is, when system running, many services, apps, would save data to data partition, if at the same time, MTP function push a file to data partition and consume all the space, then there would be fatal error for the services and apps, right?
Plz. keep the original design if you fully understand its purpose.

[13]IIC speed

msm8610.dtsi 
i2c@f9923000 { /* BLSP-1 QUP-1 */ 
cell-index = <1>; 
compatible = "qcom,i2c-qup"; 
#address-cells = <1>; 
#size-cells = <0>; 
reg-names = "qup_phys_addr"; 
reg = <0xf9923000 0x1000>; 
interrupt-names = "qup_err_intr"; 
interrupts = <0 95 0>; 
qcom,i2c-bus-freq = <100000>; 
qcom,i2c-src-freq = <19200000>; 
qcom,sda-gpio = <&msmgpio 2 0>; 
qcom,scl-gpio = <&msmgpio 3 0>; 
qcom,master-id = <86>; 
};

[13]NFC省晶振与不省晶振有什么区别

不省晶体方案
clk是直接晶体产生供给NFC,软件需要在NFC代码位置进行配置,高通部分代码是否需要配置需要软件确认下

省晶体方案
clk公用RF的clk时钟,高通部分代码和NFC部分代码都需要配置

[14]

sys/kernel/debug/spmi/spmi-0 写入寄存器值   echo 0x1043 >address

cat data
01040 -- -- -- 4A

查看电池是不是充满。

batterydata:

msm8226-qrd.dtsi/ {
 qrd_batterydata: qcom,battery-data {
  qcom,rpull-up-kohm = <100>;
  qcom,vref-batt-therm = <1800000>;

/include/ "batterydata-qrd-4v35-2000mah.dtsi"

[15]

For HOST side, please see dsi_host_v2.c, and msm_dsi_host_init function. 
For Slave side, please mdss_dsi_panel.c, and mdss_dsi_panel_init function.

If you want know the detail, please study the mdss source code and add more debug log on it.

BTW,

MDSS stands for Mobile Display SubSystem.

MDP stands for Mobile DIsplay Processor.

That is to say, MDP5 means that MDSS

[16]

./qcom/common/rootdir/etc/init.qcom 
.syspart_fixup.sh中 
touch /system/etc/boot_fixup 
要如何修改它的权限呢,目录下的文件和目录权限所有者为root,同时对于其他用户不可写

touch /system/etc/boot_fixup 
chown root root(or system) /system/etc/boot_fixup 
chmod 664 /system/etc/boot_fixup

[17]应用程序写文件到内置存储卡将data空间占满,需要加保护,请问如何加保护? 
 static int has_free_blocks(s64 free_blocks, s64 dirty_blocks)
 {
        int ret;
-       if(current->cred->uid  > 10000 && (free_blocks - dirty_blocks) < 7680) {
+
+       if((free_blocks - dirty_blocks) < 7680) {
                ret = get_pid_cmdline(current, buf);
                if(ret > 0)
                        buf[ret] = 0;
                else
                        return 1;
+               if(current->cred->uid  <= 10000 && strcmp(buf, "/system/bin/sdcard"))
+                       return 1;
                pr_info("free_blocks: %s\n", buf);

10000是app最小的uid

Qual F&Q的更多相关文章

  1. day20 FORM补充(随时更新),F/Q操作,model之多对多,django中间件,缓存,信号

    python-day20 1.FROM生成select标签的数据应该来源于数据库. 2.model 操作 F/Q  (组合查询) 3.model 多对多操作. 4.中间件 :在请求到达url前先会经过 ...

  2. 分组\聚合\F\Q查询

    一.分组和聚合查询 1.aggregate(*args,**kwargs)  聚合函数 通过对QuerySet进行计算,返回一个聚合值的字典.aggregate()中每一个参数都指定一个包含在字典中的 ...

  3. Django之ORM操作(聚合 分组、F Q)

    Django之ORM操作(聚合 分组.F Q) 聚合 aggregate()是QuerySet的一个终止子句,也就是说,他返回一个包含一些键值对的字典,在它的后面不可以再进行点(.)操作.   键的名 ...

  4. $Django 聚合函数、分组查询、F,Q查询、orm字段以及参数

        一.聚合函数    from django.db.models import Avg,Sum,Max,Min,Count,F,Q   #导入    # .查询图书的总价,平均价,最大价,最小价 ...

  5. Django学习总结②----关系运算与F,Q关系

    关联mysql步骤: 第一步:下载pymysql:pip install pymysql 第二步:在工程目录下的init文件下,将pymysql引入 import pymysql pymysql.in ...

  6. 应用程序.f/q(f了个墙)

    1.20180414: 前两天,发现 CnFast不能用了,也没管它 以为过两天会好. 今天发现还是不能用,上网随便baidu下,看到个帖子:有人用加速精灵吗 现在登陆不了了 哪位大佬知道怎么回事啊[ ...

  7. Django ORM (四) annotate,F,Q 查询

    annotate 可以通过计算查询结果中每一个对象所关联的对象集合,从而得出总计值(也可以是平均值或总和),即为查询集的每一项生成聚合. from django.shortcuts import re ...

  8. Django之model F/Q以及多对多操作

    model之F/Q操作 F操作,使用查询条件的值 打个比方吧,有一张表,保存着公司员工的工资,公司普涨工资,如何在model中操作,这就用到了F,首先需要导入此模块: from django.db.m ...

  9. Django day08 多表操作 (五) 聚合,分组查询 和 F,Q查询

    一:聚合,分组查询 二:F, Q查询

随机推荐

  1. [功能改进]Live Writer发博支持“建分类、加标签、写摘要”

    以前您在园子里用Windows Live Wirter发布博文是不是有以下三个不爽: 不爽1:如果想在发布随笔时新建分类并将随笔添加至该分类,需要先在博客后台添加分类,然后在Live Writer中刷 ...

  2. C++学习笔记 知识集锦(二)

    1. 命名规范 2. 代码格式 3. QString的判断 4. 对象的判空 5. 隐式接口&显式接口 6. vector&string 7. static 8. const 9. v ...

  3. 错误-spring3.2的架构在tomcat6.0中无法正常启动,抛出java.lang.NoClassDefFoundError: javax/servlet/AsyncListener

    原因分析: 1:org.springframework.web.servlet-3.2支持Servlet3.0的版本. 2:tomcat6.0只支持Servlet2.5,而tomcat7.0支持Ser ...

  4. VSS转SVN

    我们都知道VSS和SVN都是源代码的版本控制软件:最近公司准备把多年使用的VSS代码全部转到SVN中进行管理,查询了一些资料,整理一下,分享给大家 基本分三大步进行,如下: 1.去掉VSS所有绑定 2 ...

  5. SCRUM 流程的步骤2: Spring 计划

    1. product backlog. 2. 把故事进一步拆分成任务.   5. 形成Sprint backlog. Scrum master隆重登场,组织大家按照SCRUM流程,步步为营顺利开展工作 ...

  6. Spting--DI/IOC

    DI/IOC <bean> 代表由容器构建的对象(通过反射构建,且类必须有无参的构造方法)  公共属性 id="唯一的id" 在容器中是唯一的 name="类 ...

  7. ACM-ICPC LA 4329 Ping pong(树状数组)

    https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_probl ...

  8. 纪勇破解QQ号问题

    试题描述 来到了新学校,才相处不到一个月,jy就对oyjy一见钟情.于是向oyjy问QQ号.当然身为创(实)新(验)一班的同学,oyjy还是要考考jy.她给了纪勇一个加密后的QQ号,让纪勇解密,解密规 ...

  9. DI依赖注入/IOC控制反转

    DI依赖注入# 啥都不说,直接上代码 <?php class UserController { private $user; function __construct(UserModel $us ...

  10. js 复选框 全选都选 如果某一个子复选框没选中 则全选按钮不选中

    <!DOCTYPE HTML> <html> <head> <meta charset=UTF-8> <title>js 复选框 全选都选 ...