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
    评论
Android注册应用程序的设计与实现步骤如下: 1. 在AndroidManifest.xml文件添加应用程序的基本信息,例如应用程序的名称、图标、版本号等: ``` <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" android:allowBackup="true" android:supportsRtl="true" android:roundIcon="@drawable/ic_launcher_round" android:versionCode="1" android:versionName="1.0"> ... </application> ``` 2. 注册应用程序的Activity,例如登录界面、主界面等: ``` <activity android:name=".MainActivity" android:label="@string/app_name" android:theme="@style/AppTheme.NoActionBar"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> ``` 3. 如果应用程序需要访问网络或者使用其他敏感权限,需要在AndroidManifest.xml文件声明相关权限: ``` <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.CAMERA" /> ``` 4. 如果应用程序需要使用第三方库或者框架,需要在AndroidManifest.xml文件声明相关的依赖: ``` <application ... <meta-data android:name="com.google.android.geo.API_KEY" android:value="YOUR_API_KEY"/> ... </application> ``` 其,上述代码的YOUR_API_KEY需要替换为实际的API密钥。 5. 如果应用程序需要支持不同的语言,可以在res/values/目录下创建strings.xml文件,并在其添加多语言的字符串资源: ``` <resources> <string name="app_name">My Application</string> <string name="hello_world">Hello World!</string> </resources> ``` 6. 如果应用程序需要支持不同的主题,可以在res/values/目录下创建styles.xml文件,并在其添加不同主题的样式: ``` <resources> <!-- Base application theme. --> <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <!-- Customize your theme here. --> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> <item name="colorAccent">@color/colorAccent</item> </style> <style name="AppTheme.NoActionBar"> <item name="windowActionBar">false</item> <item name="windowNoTitle">true</item> </style> </resources> ``` 7. 最后,记得在AndroidManifest.xml文件设置应用程序的启动界面: ``` <activity android:name=".SplashActivity" android:theme="@style/Theme.AppCompat.NoActionBar"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> ``` 其,上述代码的SplashActivity需要替换为实际的启动Activity。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值