안드로이드 개발 질문/답변
(글 수 45,052)
public void startScan(){
if(conn!=null)
conn.disconnect();
if(save_file.isFile()){
conn = new MediaScannerConnection(this, this);
conn.connect();
Toast.makeText(this, "startscan", Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(this, "존재하지 않는 파일입니다.", Toast.LENGTH_SHORT).show();
}
}
public void onMediaScannerConnected(){
String temp;
temp = save_file.toString();
conn.scanFile(temp, null);
Toast.makeText(this, "connected", Toast.LENGTH_SHORT).show();
}
public void onScanCompleted(String path, Uri uri){
Toast.makeText(Edit.this, "Saved Success", Toast.LENGTH_LONG).show();
try{
if(uri==null){
Toast.makeText(Edit.this, "Saved Success", Toast.LENGTH_LONG).show();
}else{
Log.e("MediaScannerDemo", "잘못된 파일입니다.");
Toast.makeText(this, "잘못된 파일입니다.", Toast.LENGTH_SHORT).show();
}
}finally{
conn.disconnect();
conn=null;
}
}
사진을 저장한 후에 갤러리에 바로 보일 수 있게 하도록 하기위해서,
책에 있는 예제를 이용해서 미디어 스캐닝을 작성했습니다.
호출이 되는지 확인해 보기 위해서 Toast를 출력했는데,
onMediaScannerConnected()까지는 제대로 Toast 메세지가 출력지만
public void onScanCompleted(String path, Uri uri)는 호출되지 않는 것 같습니다.
또, 갤러리를 봐도 바로바로 스캔이 되지 않구요,
처음엔
sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://"+ Environment.getExternalStorageDirectory())));
이렇게 미디어 스캐닝을 실행시켜서 했었는데, 이 방식은 많이 느린것같구요...
첫번째 방식이 미디어DB에 하나씩 추가해주는 방식 아닌가요?
if(conn!=null)
conn.disconnect();
if(save_file.isFile()){
conn = new MediaScannerConnection(this, this);
conn.connect();
Toast.makeText(this, "startscan", Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(this, "존재하지 않는 파일입니다.", Toast.LENGTH_SHORT).show();
}
}
public void onMediaScannerConnected(){
String temp;
temp = save_file.toString();
conn.scanFile(temp, null);
Toast.makeText(this, "connected", Toast.LENGTH_SHORT).show();
}
public void onScanCompleted(String path, Uri uri){
Toast.makeText(Edit.this, "Saved Success", Toast.LENGTH_LONG).show();
try{
if(uri==null){
Toast.makeText(Edit.this, "Saved Success", Toast.LENGTH_LONG).show();
}else{
Log.e("MediaScannerDemo", "잘못된 파일입니다.");
Toast.makeText(this, "잘못된 파일입니다.", Toast.LENGTH_SHORT).show();
}
}finally{
conn.disconnect();
conn=null;
}
}
사진을 저장한 후에 갤러리에 바로 보일 수 있게 하도록 하기위해서,
책에 있는 예제를 이용해서 미디어 스캐닝을 작성했습니다.
호출이 되는지 확인해 보기 위해서 Toast를 출력했는데,
onMediaScannerConnected()까지는 제대로 Toast 메세지가 출력지만
public void onScanCompleted(String path, Uri uri)는 호출되지 않는 것 같습니다.
또, 갤러리를 봐도 바로바로 스캔이 되지 않구요,
처음엔
sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://"+ Environment.getExternalStorageDirectory())));
이렇게 미디어 스캐닝을 실행시켜서 했었는데, 이 방식은 많이 느린것같구요...
첫번째 방식이 미디어DB에 하나씩 추가해주는 방식 아닌가요?
2011.02.10 12:55:26
저 같은 경우에는
<meta http-equiv="content-type" content="text/html; charset=utf-8">conn = new MediaScannerConnection(this, this); 이 부분에서 뒤 파라메터를
private MediaScannerConnectionClient mScanClient = new MediaScannerConnectionClient(){
public void onMediaScannerConnected() {
Log.i("MediaScan", "[onMediaScannerConnected] Scan start " + mFilename);
mMSC.scanFile(mFilename, null);
}
public void onScanCompleted(String path, Uri uri) {
Log.i("MediaScan", "[onScanCompleted] Scan finished " + path + ", URI=" + uri.toString());
mFinished = true;
mMSC.disconnect();
}
};
이런식으로 멤버변수로 만들고 생성시에 넘겨주니 되었던 걸로 기억합니다.
mMSC = new MediaScannerConnection(context, mScanClient);



