2017-02-05 10 views
0

Так что я немного застрял в этом. Сначала я использовал простое намерение захватить фотографию и показать, что в изображении с использованием растрового изображения оно сохраняется в дополнительных функциях. , чтобы сохранить это, чтобы я мог загрузить его в хранилище для базы данных. ive последовал учебный урок в разработчике Android, фотографируя просто. ive огляделся и подумал, что мне тоже может понадобиться сканировать со счетом, но фактическая фотография уже найдена в галерееfileprovider не сохраняет изображение в каталоге приложения

Я могу получить файл, созданный, но это 0bytes в приложении галереи. Я действительно вижу фотографию но в файловом менеджере и настольном браузере я вижу только пустой файл. Я действительно не хочу использовать камеру api.

Также, когда я снимаю фотографию, используя приложение, которое снимает фотографии, а затем продолжает мое приложение. перед файловым провайдером это сработает и вернет растровое изображение Спасибо за внимание.

Любой избыточный код в методе createfilepath это я экспериментировал с андроида я думаю, что проблема с приложениями камеры, разбивающихся но с ним происходит все caera приложения я имею его мой код

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
<paths xmlns:android="http://schemas.android.com/apk/res/android"> 
<external-path name="my_images" path="Android/data/com.example.testing.app/files/Pictures" /> 

</paths> 
</resources> 


public void newImage(){ 
    if(pic.resolveActivity(getActivity().getPackageManager())!=null) { 
     File photoFile = createFilePath(); 
     if(photoFile!=null){ 
      Log.d("abc", "newImage: "+photoFile.toString()); 

      Uri photoURI = FileProvider.getUriForFile(getActivity(),"com.example.testing.app.fileprovider",photoFile); 
      Log.d("abc", "newImage: "+photoURI.toString()); 
      pic.putExtra(MediaStore.EXTRA_OUTPUT,photoURI); 
      startActivityForResult(pic,1); 
     } 

    } 
} 

public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    Log.d("test", "onActivityResult: "); 
    if(requestCode==1&&resultCode==RESULT_OK){ 
    // galleryAddPic(); 
     Bundle extra= data.getExtras(); 
     bit =(Bitmap) extra.get("data"); 
     Log.d("abc", "onActivityResult: "+extra.get(MediaStore.EXTRA_OUTPUT).toString()); 
     picture.setImageBitmap(bit); 
    } 
} 


public File createFilePath(){ 
    File filepath= getActivity().getExternalFilesDir(Environment.DIRECTORY_PICTURES); 
    Log.d(TAG, "createFilePath: "+ filepath.toString()); 
    File filepath2 = new File(filepath.getAbsolutePath()); 
    File filepath3=null; 

    try { 
     filepath3 = File.createTempFile("temp", ".jpg", filepath4); 
     Log.d(TAG, "createFilePath: "); 
     return filepath3; 
    //  nCurrentPhotoPath = filepath3.getAbsolutePath(); 
    }catch(IOException e){ 
     e.printStackTrace(); 
     Log.d(TAG, "createFilePath: "); 
    } 

    return filepath3; 
} 

EDIT Provider в Manifest

<provider 
     android:name="android.support.v4.content.FileProvider" 
     android:authorities="com.example.testing.app.fileprovider" 
     android:exported="false" 
     android:grantUriPermissions="true"> 
     <meta-data 
      android:name="android.support.FILE_PROVIDER_PATHS" 
      android:resource="@xml/filepaths"/> 

    </provider> 

функции и полномочия

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> 
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> 


<uses-feature android:name="android.hardware.Camera" android:required="false"/> 
<uses-feature android:name="android.hardware.camera2" android:required="false"/> 
<uses-feature android:name="android.hardware.location.gps"/> 
+0

Опубликуйте файл своего провайдера. – Pztar

+0

У меня есть код манифеста – ah4444

ответ

0

Обходным является удаление поставщика файлов и взять растровые вернулась из намерения и в onactivity используйте код в этом ответе code

0

extra.get("data") является эскизом, вашего реального изображения находится в файле, который вы создали photoFile

 Смежные вопросы

  • Нет связанных вопросов^_^