2016-03-11 46 views
0

我無法獲取從android studio中的攝像頭服務返回的位圖圖像的路徑。我現在的代碼如下所示:從Android Studio中的攝像頭訪問位圖圖像

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 

    Bitmap image = (Bitmap) data.getExtras().get("data"); 
    imageView.setImageBitmap(Bitmap); 
} 

我想在此方法中獲取位圖圖像的路徑。

回答

0

如果你得到data額外的,那麼沒有路徑。 Bitmap就是這樣。

如果你想在第三方相機應用中拍攝全分辨率的圖片,保存它,使用EXTRA_OUTPUT當您設置IntentACTION_IMAGE_CAPTURE

/*** 
Copyright (c) 2008-2016 CommonsWare, LLC 
Licensed under the Apache License, Version 2.0 (the "License"); you may not 
use this file except in compliance with the License. You may obtain a copy 
of the License at http://www.apache.org/licenses/LICENSE-2.0. Unless required 
by applicable law or agreed to in writing, software distributed under the 
License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS 
OF ANY KIND, either express or implied. See the License for the specific 
language governing permissions and limitations under the License. 

From _The Busy Coder's Guide to Android Development_ 
https://commonsware.com/Android 
*/ 

package com.commonsware.android.camcon; 

import android.app.Activity; 
import android.content.Intent; 
import android.net.Uri; 
import android.os.Bundle; 
import android.os.Environment; 
import android.provider.MediaStore; 
import java.io.File; 

public class CameraContentDemoActivity extends Activity { 
    private static final String EXTRA_FILENAME= 
    "com.commonsware.android.camcon.EXTRA_FILENAME"; 
    private static final String FILENAME="CameraContentDemo.jpeg"; 
    private static final int CONTENT_REQUEST=1337; 
    private File output=null; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    Intent i=new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 

    if (savedInstanceState==null) { 
     File dir= 
     Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM); 

     dir.mkdirs(); 
     output=new File(dir, FILENAME); 
    } 
    else { 
     output=(File)savedInstanceState.getSerializable(EXTRA_FILENAME); 
    } 

    if (output.exists()) { 
     output.delete(); 
    } 

    i.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(output)); 

    startActivityForResult(i, CONTENT_REQUEST); 
    } 

    @Override 
    protected void onSaveInstanceState(Bundle outState) { 
    super.onSaveInstanceState(outState); 

    outState.putSerializable(EXTRA_FILENAME, output); 
    } 

    @Override 
    protected void onActivityResult(int requestCode, int resultCode, 
            Intent data) { 
    if (requestCode == CONTENT_REQUEST) { 
     if (resultCode == RESULT_OK) { 
     Intent i=new Intent(Intent.ACTION_VIEW); 

     i.setDataAndType(Uri.fromFile(output), "image/jpeg"); 
     startActivity(i); 
     finish(); 
     } 
    } 
    } 
} 

EXTRA_OUTPUT包含在希望的Uri要保存的圖像。如果一切順利,第三方相機應用程序將遵循說明並將圖像放在那裏,然後您可以隨時訪問圖像,無論您要求如何。請記住,當相機應用程序處於前景時,您的過程可能會終止,因此您需要在某處保留路徑,例如我在保存的實例狀態Bundle中執行此操作。

+0

我做了一個新的類,你已經寫過上面這樣的名字CameraContentDemoActivity 我在新類中的onActivityResult面臨一個問題,要將數據發送回主活動 –