Android,Phonegap和相机:我的应用程序被杀后如何才能获得图片?

时间:2012-07-09 00:29:18

标签: android cordova camera

编辑:

对于那些现在看到这一点的人,我们已经解决了这个问题。请参阅我对this questionthis question的回答,以获得解释和可能的解决方案。


好吧,我以为我弄明白了,但我没有。

在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相对于应用程序目录保存图片的位置。然后,需要图片的页面可以抓取指定目录中的任何照片。但是,我还没有找到办法做到这一点。

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

1 个答案:

答案 0 :(得分:0)

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