2012-10-30 3 views
1

10 개의 이미지가 있고이 이미지를 모두 Android 애플리케이션 메모리에 저장하려고합니다. 그래서 언제든지이 응용 프로그램을 설치할 때마다 그는 이미이 모든 이미지를 가지고 있습니다.이미지 저장 및 SD 카드의 모든 이미지 복사

나는 여러 번 하드 코딩되어 좋은 응답을받지 못했습니다.

어떤 방식 으로든 존재합니다. 그래서 나는 그것을 끝낼 것이다.

은 APK의 자산 폴더 나에게

+0

자산 폴더 사용이 도움이 될 수 있습니다. – Ashwani

+0

자산에 하위 폴더를 만들거나 모든 이미지를 직접 복사해야합니까 –

+0

자산 폴더 만들기,이 폴더는 res/src/ – dumbfingers

답변

1

스토어의 모든 이미지를 도와주세요. 설치가 완료되면 내부 메모리를 스캔하여 원하는 이미지가 있는지 확인하십시오. 그렇지 않은 경우 복사하십시오. 이렇게하면 사용자가 응용 프로그램의 데이터를 지우더라도 다시 복사 할 수 있습니다. 또 다른 좋은 점은 사용자가 잘 알지 못하기 때문에 좋은 사용자 경험입니다. APK 크기가 커지면 그에 맞게 관리해야합니다.

당신은 당신의 자산, 고해상도 폴더에있는 파일을 보관할 수있는 코드

InputStream inputStream = getAssets().open("yourfile.jpg"); 
      OutputStream out = new FileOutputStream(new File("/sdcard/yourfile.jpg")); 
      int read = 0; 
      byte[] bytes = new byte[1024]; 
      while ((read = inputStream.read(bytes)) != -1) { 
       out.write(bytes, 0, read); 
      } 
      inputStream.close(); 
      out.flush(); 
      out.close(); 
+0

과 같은 수준에 있는지 확인하십시오. http://stackoverflow.com/questions/4447477/android-how-to-copy-files-in-assets-to-sdcard 첫 번째 답변을하지만 그것은 나를 "예외 파일을 복사하지 못했습니다 : 이미지". 여기서 변경해야합니까? files = assetManager.list (""); .. ASSESTS 폴더에있는 모든 파일을 복사하기 만하면됩니다. –

+0

이미지를 단순히 복사 한 다음 파일 스트림을 사용하여 복사하십시오. AssetManager는 서로 다른 파일을 구분할 수 없기 때문에 모든 것이 데이터 스트림입니다. 그래서 똑같은 것을 시도해보십시오. –

0

의 아래 부분을보십시오, 나는 여기 당김 고해상도 /에서 파일을 보관/내가 필요로 할 때의 sdcard에 복사했다. 아래 코드에서 먼저 파일이 존재하지 않는지 확인합니다. 우리는 드로어 블에서 비트 맵을 생성하고 파일을 sdcard에 씁니다.

File file = new File(pathExt+"/Pictures/", "s1.png"); 
       if(isSDCARDMounted()){ 
       if (!file.exists()) { 
        bmp = BitmapFactory.decodeResource(getResources(), 
          R.drawable.s1); 

        try { 

         FileOutputStream outStream = new FileOutputStream(file); 
         bmp.compress(Bitmap.CompressFormat.JPEG, 100, outStream); 
         outStream.flush(); 
         outStream.close(); 
        } catch (FileNotFoundException e) { 
         // TODO Auto-generated catch block 
         e.printStackTrace(); 
        } catch (IOException e) { 
         // TODO Auto-generated catch block 
         e.printStackTrace(); 
        } 
         } 
} 

isSDCARDMounted : 카드가 장착되지 않았거나 경우 확인하기위한 기능

PATHEXT : 만들기 확실히 권한을 외부 저장

에 쓰기 위해 설정 한

외부 저장 디렉토리 경로에 대한 변수

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
관련 문제