2014-11-17 3 views
0

У меня возникают проблемы, устанавливая ImageView к JPG в папке DCIM моего приложенияИмея проблемы с загрузкой изображения в ImageView

Это одна строка кода делает мое приложение идти очень медленно, и часто выходит из строя приложение полностью.

picturesDirectoryPath = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM).getAbsolutePath() + "/camera/TapTrack/"; 
imageview.setImageURI(Uri.parse(picturesDirectoryPath + "/TapTrack_164.jpg/")); 

Я также попытался другим способом, установив ImageView в растровое изображение, однако это так же медленно

picturesDirectoryPath = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM).getAbsolutePath() + "/camera/TapTrack/"; 
imageview.setImageBitmap(BitmapFactory.decodeFile(picturesDirectoryPath + "/TapTrack_164.jpg/")); 

мне было просто интересно, если вы, ребята знали о более эффективном способе установки imageview = путь к телефону. Спасибо за любую помощь!

--logcat error--

11-16 21:53:50.062: E/AndroidRuntime(1820): FATAL EXCEPTION: main 
11-16 21:53:50.062: E/AndroidRuntime(1820): Process: com.example.homeworkreminder, PID: 1820 
11-16 21:53:50.062: E/AndroidRuntime(1820): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.homeworkreminder/com.winbusiness.taptrack.EditAssignment}: java.lang.NullPointerException 
11-16 21:53:50.062: E/AndroidRuntime(1820):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195) 
11-16 21:53:50.062: E/AndroidRuntime(1820):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245) 
11-16 21:53:50.062: E/AndroidRuntime(1820):  at android.app.ActivityThread.access$800(ActivityThread.java:135) 
11-16 21:53:50.062: E/AndroidRuntime(1820):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196) 
11-16 21:53:50.062: E/AndroidRuntime(1820):  at android.os.Handler.dispatchMessage(Handler.java:102) 
11-16 21:53:50.062: E/AndroidRuntime(1820):  at android.os.Looper.loop(Looper.java:136) 
11-16 21:53:50.062: E/AndroidRuntime(1820):  at android.app.ActivityThread.main(ActivityThread.java:5017) 
11-16 21:53:50.062: E/AndroidRuntime(1820):  at java.lang.reflect.Method.invokeNative(Native Method) 
11-16 21:53:50.062: E/AndroidRuntime(1820):  at java.lang.reflect.Method.invoke(Method.java:515) 
11-16 21:53:50.062: E/AndroidRuntime(1820):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) 
11-16 21:53:50.062: E/AndroidRuntime(1820):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 
11-16 21:53:50.062: E/AndroidRuntime(1820):  at dalvik.system.NativeStart.main(Native Method) 
11-16 21:53:50.062: E/AndroidRuntime(1820): Caused by: java.lang.NullPointerException 
11-16 21:53:50.062: E/AndroidRuntime(1820):  at com.winbusiness.taptrack.EditAssignment.checkForPictures(EditAssignment.java:140) 
11-16 21:53:50.062: E/AndroidRuntime(1820):  at com.winbusiness.taptrack.EditAssignment.setCurrentValues(EditAssignment.java:135) 
11-16 21:53:50.062: E/AndroidRuntime(1820):  at com.winbusiness.taptrack.EditAssignment.declareVariables(EditAssignment.java:112) 
11-16 21:53:50.062: E/AndroidRuntime(1820):  at com.winbusiness.taptrack.EditAssignment.onCreate(EditAssignment.java:59) 
11-16 21:53:50.062: E/AndroidRuntime(1820):  at android.app.Activity.performCreate(Activity.java:5231) 
11-16 21:53:50.062: E/AndroidRuntime(1820):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) 
11-16 21:53:50.062: E/AndroidRuntime(1820):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159) 
11-16 21:53:50.062: E/AndroidRuntime(1820):  ... 11 more 

--second LogCat error--

11-16 21:53:44.092: E/memtrack(1809): Couldn't load memtrack module (No such file or directory) 
11-16 21:53:44.092: E/android.os.Debug(1809): failed to load memtrack module: -2 
11-16 21:53:44.922: E/gralloc_goldfish(51): gralloc_alloc: Mismatched usage flags: 246 x 410, usage 333 
11-16 21:53:44.922: E/(51): GraphicBufferAlloc::createGraphicBuffer(w=246, h=410) failed (Invalid argument), handle=0x0 
11-16 21:53:44.932: E/BufferQueue(382): [ScreenshotClient] dequeueBuffer: SurfaceComposer::createGraphicBuffer failed 
11-16 21:53:49.452: E/SoundPool(382): error loading /system/media/audio/ui/Effect_Tick.ogg 
11-16 21:53:49.462: E/SoundPool(382): error loading /system/media/audio/ui/Effect_Tick.ogg 
11-16 21:53:49.462: E/SoundPool(382): error loading /system/media/audio/ui/Effect_Tick.ogg 
11-16 21:53:49.472: E/SoundPool(382): error loading /system/media/audio/ui/Effect_Tick.ogg 
11-16 21:53:49.472: E/SoundPool(382): error loading /system/media/audio/ui/Effect_Tick.ogg 
11-16 21:53:49.472: E/SoundPool(382): error loading /system/media/audio/ui/KeypressStandard.ogg 
11-16 21:53:49.472: E/SoundPool(382): error loading /system/media/audio/ui/KeypressSpacebar.ogg 
11-16 21:53:49.472: E/SoundPool(382): error loading /system/media/audio/ui/KeypressDelete.ogg 
11-16 21:53:49.482: E/SoundPool(382): error loading /system/media/audio/ui/KeypressReturn.ogg 
11-16 21:53:49.482: E/SoundPool(382): error loading /system/media/audio/ui/KeypressInvalid.ogg 
11-16 21:53:50.062: E/AndroidRuntime(1820): FATAL EXCEPTION: main 
11-16 21:53:50.062: E/AndroidRuntime(1820): Process: com.example.homeworkreminder, PID: 1820 
11-16 21:53:50.062: E/AndroidRuntime(1820): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.homeworkreminder/com.winbusiness.taptrack.EditAssignment}: java.lang.NullPointerException 
11-16 21:53:50.062: E/AndroidRuntime(1820):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195) 
11-16 21:53:50.062: E/AndroidRuntime(1820):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245) 
11-16 21:53:50.062: E/AndroidRuntime(1820):  at android.app.ActivityThread.access$800(ActivityThread.java:135) 
11-16 21:53:50.062: E/AndroidRuntime(1820):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196) 
11-16 21:53:50.062: E/AndroidRuntime(1820):  at android.os.Handler.dispatchMessage(Handler.java:102) 
11-16 21:53:50.062: E/AndroidRuntime(1820):  at android.os.Looper.loop(Looper.java:136) 
11-16 21:53:50.062: E/AndroidRuntime(1820):  at android.app.ActivityThread.main(ActivityThread.java:5017) 
11-16 21:53:50.062: E/AndroidRuntime(1820):  at java.lang.reflect.Method.invokeNative(Native Method) 
11-16 21:53:50.062: E/AndroidRuntime(1820):  at java.lang.reflect.Method.invoke(Method.java:515) 
11-16 21:53:50.062: E/AndroidRuntime(1820):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) 
11-16 21:53:50.062: E/AndroidRuntime(1820):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 
11-16 21:53:50.062: E/AndroidRuntime(1820):  at dalvik.system.NativeStart.main(Native Method) 
11-16 21:53:50.062: E/AndroidRuntime(1820): Caused by: java.lang.NullPointerException 
11-16 21:53:50.062: E/AndroidRuntime(1820):  at com.winbusiness.taptrack.EditAssignment.checkForPictures(EditAssignment.java:140) 
11-16 21:53:50.062: E/AndroidRuntime(1820):  at com.winbusiness.taptrack.EditAssignment.setCurrentValues(EditAssignment.java:135) 
11-16 21:53:50.062: E/AndroidRuntime(1820):  at com.winbusiness.taptrack.EditAssignment.declareVariables(EditAssignment.java:112) 
11-16 21:53:50.062: E/AndroidRuntime(1820):  at com.winbusiness.taptrack.EditAssignment.onCreate(EditAssignment.java:59) 
11-16 21:53:50.062: E/AndroidRuntime(1820):  at android.app.Activity.performCreate(Activity.java:5231) 
11-16 21:53:50.062: E/AndroidRuntime(1820):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) 
11-16 21:53:50.062: E/AndroidRuntime(1820):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159) 
11-16 21:53:50.062: E/AndroidRuntime(1820):  ... 11 more 
11-16 22:45:01.352: E/PerformBackupTask(382): Error invoking for backup on @[email protected] 
11-16 22:45:01.382: E/PerformBackupTask(382): Duplicate finish 
11-16 22:53:46.892: E/memtrack(1848): Couldn't load memtrack module (No such file or directory) 
11-16 22:53:46.912: E/android.os.Debug(1848): failed to load memtrack module: -2 
11-16 22:53:58.192: E/memtrack(1863): Couldn't load memtrack module (No such file or directory) 
11-16 22:53:58.192: E/android.os.Debug(1863): failed to load memtrack module: -2 
11-16 22:53:59.182: E/gralloc_goldfish(51): gralloc_alloc: Mismatched usage flags: 246 x 410, usage 333 
11-16 22:53:59.192: E/(51): GraphicBufferAlloc::createGraphicBuffer(w=246, h=410) failed (Invalid argument), handle=0x0 
11-16 22:53:59.192: E/BufferQueue(382): [ScreenshotClient] dequeueBuffer: SurfaceComposer::createGraphicBuffer failed 
11-16 22:55:41.962: E/memtrack(1892): Couldn't load memtrack module (No such file or directory) 
11-16 22:55:41.962: E/android.os.Debug(1892): failed to load memtrack module: -2 
11-16 22:55:56.252: E/memtrack(1908): Couldn't load memtrack module (No such file or directory) 
11-16 22:55:56.252: E/android.os.Debug(1908): failed to load memtrack module: -2 
11-16 22:55:56.942: E/gralloc_goldfish(51): gralloc_alloc: Mismatched usage flags: 246 x 410, usage 333 
11-16 22:55:56.952: E/(51): GraphicBufferAlloc::createGraphicBuffer(w=246, h=410) failed (Invalid argument), handle=0x0 
11-16 22:55:56.952: E/BufferQueue(382): [ScreenshotClient] dequeueBuffer: SurfaceComposer::createGraphicBuffer failed 
11-16 22:57:18.952: E/memtrack(1935): Couldn't load memtrack module (No such file or directory) 
11-16 22:57:18.952: E/android.os.Debug(1935): failed to load memtrack module: -2 
11-16 22:57:20.032: E/InputDispatcher(382): channel 'b3cd1690 com.example.homeworkreminder/com.winbusiness.taptrack.Home (server)' ~ Channel is unrecoverably broken and will be disposed! 
11-16 22:57:33.172: E/memtrack(1952): Couldn't load memtrack module (No such file or directory) 
11-16 22:57:33.172: E/android.os.Debug(1952): failed to load memtrack module: -2 
11-16 22:57:33.732: E/gralloc_goldfish(51): gralloc_alloc: Mismatched usage flags: 246 x 410, usage 333 
11-16 22:57:33.732: E/(51): GraphicBufferAlloc::createGraphicBuffer(w=246, h=410) failed (Invalid argument), handle=0x0 
11-16 22:57:33.732: E/BufferQueue(382): [ScreenshotClient] dequeueBuffer: SurfaceComposer::createGraphicBuffer failed 
11-16 23:19:14.712: E/PerformBackupTask(382): Error invoking for backup on @[email protected] 
11-16 23:19:14.732: E/PerformBackupTask(382): Duplicate finish 
+0

С момента сбоя вы можете отправить трассировку стека ошибок из LogCat? –

+0

Ошибка, как, несколько строк на logcat. Есть ли способ скопировать все это? – Ggrimerz

+0

Вы можете выбрать и скопировать несколько строк из LogCat –

ответ

-3

Посмотрите на ниже андроида статьи

public static Bitmap decodeSampledBitmapFromResource(Resources res, int resId, 
    int reqWidth, int reqHeight) { 

// First decode with inJustDecodeBounds=true to check dimensions 
final BitmapFactory.Options options = new BitmapFactory.Options(); 
options.inJustDecodeBounds = true; 
BitmapFactory.decodeResource(res, resId, options); 

// Calculate inSampleSize 
options.inSampleSize = calculateInSampleSize(options, reqWidth, reqHeight); 

// Decode bitmap with inSampleSize set 
options.inJustDecodeBounds = false; 
return BitmapFactory.decodeResource(res, resId, options); 
} 

Загрузка Большой Bitmaps эффективно http://developer.android.com/training/displaying-bitmaps/load-bitmap.html

0

возможно неправильные картинкиDirectoryPath. , если ваш путь, как "/mnt/sdcard/TapTrack_164.jpg"

File f = new File(path); Uri imageUri = Uri.fromFile(f); 

отмечают, что "/mnt/sdcard/TapTrack_164.jpg/" было неправильно, удалите/в конце пути: "/ шоссе/SDCard /TapTrack_164.jpg "

+0

Я сменил picturesDirectoryPath на прямой путь, например «/mnt/sdcard/TapTrack_164.jpg», и ничего не изменил. – Ggrimerz

0

Попробуйте это.

File dir = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/your folder path"); 
File file; 
     try { 
      file = new File(dir, "yourImage.png"); 
      imageView.setImageBitmap(BitmapFactory.decodeFile(file.getAbsolutePath())); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 

И не забудьте добавить следующие разрешения для вашего манифеста.

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

Отметьте как выше, если он сработает для вас.

+0

Он по-прежнему падает = /. Например, он открывается сначала, очень медленно, но затем, когда вы открываете его снова, происходит сбой. – Ggrimerz

+0

Журналы для крушения теперь такие же, как и в вашем вопросе.? – Nitesh

+0

Нет, теперь они разные. Хотите, чтобы я опубликовал его? – Ggrimerz

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