Android2.2的camera应用程序中支持双camera切换(二)

 

6.     CameraHeadUpDisplay.java文件

其位于Packages/apps/camera/ src/com/android/camera/ui/ CameraHeadUpDisplay.java

在函数getListPreferences中添加CameraSettings.KEY_CAMERA_ID,即如下所示:

ListPreference prefs[] = getListPreferences(group,

                CameraSettings.KEY_FOCUS_MODE,

                CameraSettings.KEY_EXPOSURE,

                CameraSettings.KEY_SCENE_MODE,

                CameraSettings.KEY_PICTURE_SIZE,

                CameraSettings.KEY_CAMERA_ID,

                CameraSettings.KEY_JPEG_QUALITY,

                CameraSettings.KEY_COLOR_EFFECT);

函数getListPreferences()定义在文件HeadUpDisplay.java中,其定义为:

protected static ListPreference[] getListPreferences(

            PreferenceGroup group, String ... prefKeys) {

        ArrayList<ListPreference> list = new ArrayList<ListPreference>();

        for (String key : prefKeys) {

            ListPreference pref = group.findPreference(key);

            if (pref != null && pref.getEntries().length > 0) {

                list.add(pref);

            }

        }

        return list.toArray(new ListPreference[list.size()]);

    }

这里的处理,就决定了哪些菜单项会被考虑去做显示。所以必须添加CameraSettings.KEY_CAMERA_ID进去,否则菜单项是不会被显示的。

 

7.     Camera.java文件

其位于Framework/base/core/java/android/hardware/camera.java

在这个文件中,主要是提供几个获取和设置cameraId的接口。首先定义:

private static final String KEY_CAMERA_ID = "cameraid";

 

public   void setCamId(int cameraId)

{

    if(0 == cameraId){

        set(KEY_CAMERA_ID, "back_camera");

        }

    else{

                set(KEY_CAMERA_ID, "front_camera");

    }

}

public  int getCamId()

{  

    if("back_camera" == get(KEY_CAMERA_ID)){

        return 0;

    }

    else{

        return 1;

    }

}

public   void setCameraIdString(String value)

{

    set(KEY_CAMERA_ID, value);

}

public  String getCameraIdString()

{  

    return get(KEY_CAMERA_ID);

}

public List<String> getSupportedCameraId() {

    String str = get(KEY_CAMERA_ID + SUPPORTED_VALUES_SUFFIX);     

    return split(str);

}

这里需要说明的是,在camera HAL必须把硬件camera所支持的cameraID信息表示清楚,否则应用程序不能正确显示camera切换菜单。

 

8.     CameraParameters.cpp文件

其位于Framework/base/libs/camera/CameraParameters.cpp

在该文件中添加如下定义:

const char CameraParameters::KEY_CAMERA_ID[] = "cameraid";
const char CameraParameters::KEY_SUPPORTED_CAMERA_ID[] = "cameraid-values";

    同时,CameraParameters.h中添加:

static const char KEY_CAMERA_ID[];

static const char KEY_SUPPORTED_CAMERA_ID[];

 

上述文字,就Android2.2camera应用程序中如何添加菜单支持camera切换问题,做了一些描述。希望对刚接触Android平台下camera的朋友能有所帮助。如果有其他问题,可以联系我。

 

 

Revision History

修订历史记录

Version

版本

Date

日期

Author

作者

Brief Description

变更简要

0.0.1

2011-05-02

Wangxiaozhe

wxiaozhe@163.com

QQ1226062415

Init draft.

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值