1

编辑:

对于那些现在看到这个的人,我们已经解决了这个问题。有关解释和可能的解决方案,请参阅我对这个问题这个问题的回答。


好吧,我以为我已经解决了这个问题,但我没有。

发生的事情与在 Android 中启动相机很常见:一旦您拍照,内存需求会导致系统终止启动相机的应用程序。我的困难是,在我的应用程序被杀死后,我无法获取最近捕获的图像的 URI。我在搜索中看到了很多针对本机 Android 应用程序的解决方案,但对于 Phonegap 却没有。

由于相机开始的页面不是活动默认加载到的页面这一事实,这使情况变得更加复杂。当应用重启时,它想在这个应用的登录页面重启,而不是需要图片数据的URI的页面。

我让应用程序在它死之前保存它所在的最后一页,并在它启动时回想一下。我认为这会解决问题,但相机的回调仍然没有被调用。这可能是因为即使它返回到同一页面,它也返回到该页面的不同实例。

让我向您展示我到目前为止所拥有的。

这是调用相机的代码:

    function capturePhoto(){
        navigator.camera.getPicture(onPhotoURISuccess, onFail,
            { quality: 20, destinationType: Camera.DestinationType.FILE_URI } );
    };

    function onPhotoURISuccess(imageURI) {
        //Do some stuff with the image, like save the URI in localStorage
    }

很基本,没什么特别的。只是 onPhotoURISuccess() 永远不会被调用。这是我保存和重新加载最后一页的方法。这一切都是在 DroidGap 活动中用 Java 完成的:

    //Save the last page that the user was on
    @Override
    public void onSaveInstanceState(Bundle savedState) {
        super.onSaveInstanceState(savedState);

        savedState.putString("lastPage", appView.getUrl());
    }

    //Recall the page
    @Override
    public void onCreate(Bundle savedState) {
        super.onCreate(savedState);

        //The default page is the login page
        String pageToLoad = "file:///android_asset/www/login.html";

        if(savedState != null && savedState.containsKey("lastPage")) {
            pageToLoad = savedState.getString("lastPage");
        }

        super.loadUrl(pageToLoad);
    }

所以,到目前为止,我的想法是在 DroidGap 活动中以某种方式从相机中获取 onActivityResult,但我不确定它是如何工作的,我宁愿不为它创建一个 Phonegap 插件,因为我想保留代码尽可能跨平台。

另一个想法是从Phonegap 以某种方式告诉相机相对于应用程序的目录将图片保存在哪里。然后,需要图片的页面就可以抓取指定目录中的任何一张图片。但是,我还没有找到一种方法来做到这一点。

抱歉,如果我在搜索中忽略了某些内容,这是一个重复的问题,在此先感谢您的帮助!

4

1 回答 1

0

对于那些现在看到这个的人,我们已经解决了这个问题。有关解释和可能的解决方案,请参阅我对这个问题和这个问题的回答。

于 2012-12-12T22:54:37.833 回答