Как загрузить / добавить изображения на SD-карту в Android? - PullRequest
0 голосов
/ 31 января 2012

У меня около 300-400 изображений размером 320х480 пикселей в формате jpg.Я должен добавить эти изображения на SD-карту.В настоящее время я помещаю эти изображения в папку Drawable в моем проекте.Теперь я хочу переместить эти изображения на SD-карту и через это я хочу использовать эти изображения для анимации.Я также хочу проверить, установлена ​​ли SD-карта или нет при первом запуске приложения.Я не имею ни малейшего представления о программировании SD CARD в Android, поэтому, пожалуйста, кто-нибудь есть какие-либо идеи или ссылки для начинающих, пожалуйста, дайте мне знать.

CODE

ImageView imgAssets;
String path="";

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    path = Environment.getExternalStorageDirectory().toString();

    try {
        copyFromAsstesToSDCard();
        readFromSDCard();   
    } catch (Exception e) {
        // TODO: handle exception
        e.printStackTrace();
    }
}

public void readFromSDCard() {
    // TODO Auto-generated method stub
    File dir = Environment.getExternalStorageDirectory();  
    //File yourFile = new File(dir, "path/to/the/file/inside/the/sdcard.ext");  

    //Get the text file  
    File file = new File(dir.getAbsolutePath()+ "/cat_angry10.jpg");  
    // i have kept text.txt in the sd-card  
    //System.out.println(file.toString());

    if(file.exists())   // check if file exist  
    {  
        try {
            Bitmap bitMap = BitmapFactory.decodeFile(Environment.getExternalStorageState() + "/cat_angry10.jpg");
            //imgAssets.setImageBitmap(bitMap);
                 imgAssets.setBackgroundDrawable(new BitmapDrawable(bitMap));
        }  
        catch (Exception e) {
            //You'll need to add proper error handling here
            e.printStackTrace();
        }
    }  
    else  
    {  
        System.out.println("Sorry file doesn't exist!!");  
    }  

}

public void copyFromAsstesToSDCard() {
    // TODO Auto-generated method stub
    AssetManager assetManager = getAssets();  
    String[] files = null;  
    try {  
        files = assetManager.list("Images");  
    } catch (IOException e) {  
        Log.e("tag", e.getMessage());  
    } catch (Exception e) {
        // TODO: handle exception
        e.printStackTrace();
    }

    for(String filename : files) {  
        System.out.println("File name => "+filename);  
        InputStream in = null;  
        OutputStream out = null;  
        try {  
            in = assetManager.open("Images/"+filename);   // if files resides inside the "Files" directory itself  
            out = new FileOutputStream(Environment.getExternalStorageDirectory().toString() + "/" + filename);
            System.out.println(out.toString());
            copyFile(in, out);  
            in.close();  
            in = null;  
            out.flush();  
            out.close();  
            out = null;  
        } catch(Exception e) {  
            Log.e("tag", e.getMessage());  
        }  
    }  
}

private void copyFile(InputStream in, OutputStream out) {
    // TODO Auto-generated method stub
    byte[] buffer = new byte[1024];
    int read;
    try {
        while((read = in.read(buffer)) != -1){
            out.write(buffer, 0, read);
        }
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

Я получаю исключение NullPointerException при чтении изображения с SD-карты.

Спасибо, Кейур

1 Ответ

3 голосов
/ 31 января 2012

Вот несколько ссылок - если у вас возникли проблемы с их использованием, опубликуйте свой код, и я постараюсь помочь вам в дальнейшем.

Запись Android в папку SD-карты

http://androidgps.blogspot.com/2008/09/writing-to-sd-card-in-android.html

https://sites.google.com/site/androidhowto/how-to-1/save-file-to-sd-card

...