2016-06-15 2 views
0

Я хочу сохранить скриншоты карты google на моей SD-карте, и написал этот код, но я не знаю, неправильно ли я понял термин «внешнее хранилище» или я делаю что-то неправильно, потому что все работает нормально но скриншоты сохраняются в моей внутренней памяти телефона, а не сд картыХранение внутренней памяти вместо SD-карты

public void snapshot(View view) { 
    boolean mExternalStorageAvailable = false; 
    boolean mExternalStorageWriteable = false; 
    String state = Environment.getExternalStorageState(); 

    if (Environment.MEDIA_MOUNTED.equals(state)) { 
     mExternalStorageAvailable = mExternalStorageWriteable = true; 
    } else if (Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) { 
     mExternalStorageAvailable = true; 
     mExternalStorageWriteable = false; 
    } else { 
     mExternalStorageAvailable = mExternalStorageWriteable = false; 
    } 

    if(mExternalStorageWriteable){ 
     File sdCard = Environment.getExternalStorageDirectory(); 
     File dir = new File (sdCard.getAbsolutePath() + "/DCIM/100MEDIA/"); 
     dir.mkdirs(); 
     String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date()); 
     final File file = new File(dir, "MapScreen"+timeStamp+".png"); 

     GoogleMap.SnapshotReadyCallback callback = new GoogleMap.SnapshotReadyCallback() { 
      Bitmap bitmap; 

      @Override 
      public void onSnapshotReady(Bitmap snapshot) { 
       bitmap = snapshot; 
       try { 
        FileOutputStream out = new FileOutputStream(file); 
        bitmap.compress(Bitmap.CompressFormat.PNG, 90, out); 
       } catch (Exception e) { 
        e.printStackTrace(); 
       } 
      } 
     }; 
     mMap.snapshot(callback); 
    } 
} 

Я использую Htc One m8S

+0

Посмотрите на https://developer.android.com/guide/topics/data/data-storage.html#filesExternal – antonio

+0

Проверьте ответ на этот вопрос: http://stackoverflow.com/questions/17674634/save-and-reading-bitmaps-images-from-internal-memory-in-android – user3673952

+0

Возможный дубликат [Как я могу получить внешний путь SD-карты для Android 4.0+?] (http://stackoverflow.com/questions/ 11281010/how-can-i-get-external-sd-card-path-for-android-4-0) – Bryan

ответ

0

Внешнее запоминающее устройство любое хранилище, доступен для чтения, не обязательно SD-карта (или другой съемный устройство). Хотя внутреннее хранилище - это хранилище, которое по умолчанию является приватным для приложения.

Чтобы указать съемный внешний накопитель намного сложнее, потому что многие устройства используют разные структуры каталогов. Попробуйте ответить here.

+0

Спасибо, но, к сожалению, это не работало для меня. Я не знаю, почему, но System.getenv («EXTERNAL_STORAGE») извлекает путь/sdcard, но когда я сохраняю этот путь, файлы всегда сохраняются в памяти телефона, а не в действительной SD-карте, когда приложение som file manager app показало там математике/хранилище для SD-карты, но даже если я ввел этот путь, приложение woudlnt сохранит на SD-карте (в этом случае оно ничего не спасло) – Lowrider

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