Cordova Phonegap摄像头功能

Cordova Phonegap摄像头功能,cordova,Cordova,我知道这里有很多关于Phonegap和使用摄像头功能的问题。 我试图解决这个问题,但仍然没有解决办法 设备是Nexus 7,相机在构建应用程序后不会启动。 代码如下: var pictureSource;//图像源 var destinationType;//设置返回值的格式 //等待PhoneGap与设备连接 // 文件。添加的监听器(“deviceready”,OnDeviceraddy,false); //PhoneGap已准备好使用! // 函数ondevicerady(){ pict

我知道这里有很多关于Phonegap和使用摄像头功能的问题。 我试图解决这个问题,但仍然没有解决办法

设备是Nexus 7,相机在构建应用程序后不会启动。 代码如下:


var pictureSource;//图像源
var destinationType;//设置返回值的格式
//等待PhoneGap与设备连接
//
文件。添加的监听器(“deviceready”,OnDeviceraddy,false);
//PhoneGap已准备好使用!
//
函数ondevicerady(){
pictureSource=navigator.camera.PictureSourceType;
destinationType=navigator.camera.destinationType;
}
//成功检索照片时调用
//
函数onPhotoDataSuccess(imageData){
//取消注释以查看base64编码的图像数据
//控制台日志(imageData);
//获取图像句柄
//
var smallImage=document.getElementById('smallImage');
//取消隐藏图像元素
//
smallImage.style.display='block';
//显示捕获的照片
//内联CSS规则用于调整图像大小
//
smallImage.src=“数据:图像/jpeg;base64,”+imageData;
}
//成功检索照片时调用
//
函数onPhotoURISuccess(imageURI){
//取消注释以查看图像文件URI
//log(imageURI);
//获取图像句柄
//
var largeImage=document.getElementById('largeImage');
//取消隐藏图像元素
//
largeImage.style.display='block';
//显示捕获的照片
//内联CSS规则用于调整图像大小
//
largeImage.src=imageURI;
}
//一个按钮将调用此函数
//
函数capturePhoto(){
//使用设备摄像头拍照,并将图像作为base64编码字符串检索
navigator.camera.getPicture(onPhotoDataSuccess,onFail,{quality:50});
}
//一个按钮将调用此函数
//
函数capturePhotoEdit(){
//使用设备照相机拍照,允许编辑,并以base64格式检索图像-
编码字符串
navigator.camera.getPicture(onPhotoDataSuccess,onFail,{quality:20,allowEdit:
真});
}
//一个按钮将调用此函数
//
函数getPhoto(源代码){
//从指定源检索图像文件位置
navigator.camera.getPicture(onPhotoURISuccess,onFail,{质量:50,
destinationType:destinationType.FILE\u URI,
sourceType:source});
}
//如果有什么不好的事情发生了就打电话。
// 
函数onFail(消息){
警报('失败原因:'+消息);
}
拍摄照片

用三星galaxy s2试过了。。。又一次什么也没发生! 我不知道这个问题!? 代码如下:

androidmainfest.xml权限:


这里是html文件中的代码:


var pictureSource;//图像源
var destinationType;//设置返回值的格式
//等待PhoneGap与设备连接
//
文件。添加的监听器(“deviceready”,OnDeviceraddy,false);
//PhoneGap已准备好使用!
//
函数ondevicerady(){
pictureSource=navigator.camera.PictureSourceType;
destinationType=navigator.camera.destinationType;
}
//成功检索照片时调用
//
函数onPhotoDataSuccess(imageData){
//取消注释以查看base64编码的图像数据
//控制台日志(imageData);
//获取图像句柄
//
var smallImage=document.getElementById('smallImage');
//取消隐藏图像元素
//
smallImage.style.display='block';
//显示捕获的照片
//内联CSS规则用于调整图像大小
//
smallImage.src=“数据:图像/jpeg;base64,”+imageData;
}
//成功检索照片时调用
//
函数onPhotoURISuccess(imageURI){
//取消注释以查看图像文件URI
//log(imageURI);
//获取图像句柄
//
var largeImage=document.getElementById('largeImage');
//取消隐藏图像元素
//
largeImage.style.display='block';
//显示捕获的照片
//内联CSS规则用于调整图像大小
//
largeImage.src=imageURI;
}
//一个按钮将调用此函数
//
函数capturePhoto(){
//使用设备摄像头拍照,并将图像作为base64编码字符串检索
navigator.camera.getPicture(onPhotoDataSuccess,onFail,{quality:50});
}
//一个按钮将调用此函数
//
函数capturePhotoEdit(){
//使用设备摄像头拍照,允许编辑,并以base64-
编码字符串
navigator.camera.getPicture(onPhotoDataSuccess,onFail,{quality:20,allowEdit:
真});
}
//一个按钮将调用此函数
//
函数getPhoto(源代码){
//从指定源检索图像文件位置
navigator.camera.getPicture(onPhotoURISuccess,onFail,{质量:50,
destinationType:destinationType.FILE\u URI,
sourceType:source});
}
//如果有什么不好的事情发生了就打电话。
// 
函数onFail(消息){
警报('失败原因:'+消息);
}
拍摄照片
捕获可编辑照片
从照片库
从照片 相册

您需要提供文档中提到的选项。例如:

navigator.camera.getPicture(onSuccess, onFail, { quality: 50,
    destinationType: Camera.DestinationType.DATA_URL
 }); 
再参考:
现在它可以工作了。我不知道这个问题,但它是有效的。 代码如下:


拍摄照片
函数capturePhoto(){
navigator.camera.getPicture(uploadPhoto,null,{sourceType:1,quality:60});
}
功能上传照片(数据){
//这是您将图像文件发送到服务器的位置
//将图像输出到屏幕
cameraPic.src=“数据:图像/jpeg;base64,”+数据;
}
navigator.notification.alert(消息、alertCallback、[title]、[buttonName]);
navigator.notification.alert(
'您的照片已上载',//消息
好的,//回拨
“已上载照片”,//标题
“好的”//buttonName
);
功能上传照片(数据){
//这是您将图像文件发送到服务器的位置
cameraPic.src=“数据:图像/jpeg;base64,”+数据;
//成功的upl
    private void clearMemory(boolean killAll)
{
    mklog("当前系统可用内存大小是:" + getAvailMemory(getApplicationContext()));
    ActivityManager activityManger = (ActivityManager) this
            .getSystemService(ACTIVITY_SERVICE);
    List<ActivityManager.RunningAppProcessInfo> list = activityManger
            .getRunningAppProcesses();
    if (list != null)
        for (int i = 0; i < list.size(); i++)
        {
            ActivityManager.RunningAppProcessInfo apinfo = list.get(i);

            System.out.println("pid            " + apinfo.pid);
            System.out.println("processName              "
                    + apinfo.processName);
            System.out
                    .println("importance            " + apinfo.importance);
            String[] pkgList = apinfo.pkgList;

            if (apinfo.importance >= ActivityManager.RunningAppProcessInfo.IMPORTANCE_BACKGROUND
                    || (killAll && apinfo.importance >= ActivityManager.RunningAppProcessInfo.IMPORTANCE_SERVICE))
            {
                // Process.killProcess(apinfo.pid);
                for (int j = 0; j < pkgList.length; j++)
                {
                    activityManger.killBackgroundProcesses(pkgList[j]);
                    mklog("准备杀死进程:" + pkgList[j]);
                }
            }

        }

    mklog("清理之后 当前系统可用内存大小是:" + getAvailMemory(getApplicationContext()));
}

private long getAvailMemory(Context context)
{
    ActivityManager am = (ActivityManager) context
            .getSystemService(Context.ACTIVITY_SERVICE);
    MemoryInfo mi = new MemoryInfo();
    am.getMemoryInfo(mi);
    return mi.availMem / (1024 * 1024);
}   
      public void mklog(String contentString)
{
    Log.i("Web Console", contentString);
}