android BSP 开发总结之四
1.设置状态栏的显示或隐藏
frameworks/base 路劲下面有个services/core/java/com/android/server/wm/DisplayPolicy.java, 该文件中有一个”mHasNavigationBar” , 设置为false则隐藏,否则显示。
String navBarOverride = "1";
if ("1".equals(navBarOverride)) {mHasNavigationBar = false;
} else if ("0".equals(navBarOverride)) {mHasNavigationBar = true;
}
2.修改Snapdragon camera preview size 和image distortion
Snapdragon camera 不支持landscape的情况,将camera设置为landscape后,会出现preview size 和image distortion 不正确. 有遇到两种snapdragon camera的code。分别使用两种修改方式:
修改PhotoUI VideoUI文件
修改src/com/android/camera/PhotoUI.java文件中的”layoutPreview(float ratio)” 部分code,如下:
Log.v(TAG, "setTransformMatrix: scaledTextureWidth = " + scaledTextureWidth+ ", scaledTextureHeight = " + scaledTextureHeight);
+ scaledTextureWidth = mMaxPreviewWidth - (mTopMargin + mBottomMargin);
+ scaledTextureHeight = mMaxPreviewHeight;if (((rotation == 0 || rotation == 180) && scaledTextureWidth > scaledTextureHeight)|| ((rotation == 90 || rotation == 270)&& scaledTextureWidth < scaledTextureHeight)) {
+ lp = new FrameLayout.LayoutParams((int)scaledTextureWidth ,
+ (int) scaledTextureHeight, Gravity.CENTER);
+ } else {lp = new FrameLayout.LayoutParams((int) scaledTextureHeight,(int) scaledTextureWidth, Gravity.CENTER);
- } else {
- lp = new FrameLayout.LayoutParams((int) scaledTextureWidth,
- (int) scaledTextureHeight, Gravity.CENTER);
- }
- if(mScreenRatio == CameraUtil.RATIO_4_3) {
- lp.gravity = Gravity.CENTER_HORIZONTAL | Gravity.TOP;
- lp.setMargins(0, mTopMargin, 0, mBottomMargin);}
+// if(mScreenRatio == CameraUtil.RATIO_4_3) {
+// lp.gravity = Gravity.CENTER_HORIZONTAL | Gravity.TOP;
+ lp.gravity = Gravity.TOP;
+ lp.setMargins(mTopMargin, 0, 0, mBottomMargin);
+// }
修改src/com/android/camera/VideoUI.java文件中的”layoutPreview(float ratio)” 部分code,如下: