을 어떤 실수를하고있는 중이 야 카메라에서 돌아온 후 코드의 좀 까다 롭습니다. 모든
첫째, 나는,
intent.putExtra(MediaStore.EXTRA_OUTPUT, _imageUri);
이
당신이이기 그래서 내 최선의 대답은, 대신 "EXTRA_OUTPUT"플래그를 설정하지 :-(무시, 특정 휴대폰에 생각 . 정상적으로 실행 URI 그런 다음, 거기에서 사용 새 사진을 돌려 보자 거기에서 다음
Uri u = intent.getData();
새 사진의 정보를 얻으려면, 나는 새로운 locati에 이미지 파일을 작성하는 FileOutputStream 또는를 사용 나는 그것을 가지고 싶다. 그런 다음 마지막으로 원본 파일을 삭제합니다. :-)
나는 그것이 일종의 호키족이라는 것을 알고있다. 그러나 그것은 작동한다. 그리고 나는 그것이 꽤 신뢰할 만하다고 생각한다. :-)
도움이 되었기를 바랍니다. :-) J @llango
-Jared
8-28-11
아니라, 여기 당신이 경우 복사하여 붙여 볼 환영합니다, 전체 코드입니다, 확인 당신이이 우선 들어
:-) 작업을 얻을 수 있습니다, 당신은 다음과 같이 카메라를 호출 할 것이다
startActivityForResult(CameraIntent, TAKE_PICTURE);
@Override
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
if (resultCode == Activity.RESULT_OK) {
switch (requestCode) {
case TAKE_PICTURE:
Uri u = intent.getData();
//Toast.makeText(getApplicationContext(), u.getPath(), Toast.LENGTH_SHORT).show();
WriteFiles(u);
break;
}
}
}
을 그리고 주요 마법이 기능에서 발생 : 414,다음, 결과를 당신이 원하는 것 내가 그 당신이를 사용하여 저장하기 위해 필요한 모든 부품 생각
private void WriteFiles(Uri myNewPic) {
String TempFilePath;
String TempPath;
File directory = new File("/sdcard/" + getString(R.string.app_name));
if (!directory.exists()) {
directory.mkdirs();
}
String TempPictureFile;
try {
TempPictureFile = myNewPic.getLastPathSegment() + ".jpg";
TempFilePath = directory.getPath() + "/" + TempPictureFile;
FileOutputStream myOutStream = new FileOutputStream(TempFilePath);
InputStream myInStream = getContentResolver().openInputStream(myNewPic);
FileIO myFileIO = new FileIO();
myFileIO.copy(myInStream, myOutStream);
//now delete the file after copying
getContentResolver().delete(myNewPic, null, null);
TempFilePaths.add(TempFilePath);
} catch (Exception e) {
Toast.makeText(getApplicationContext(), getString(R.string.ErrorOpeningFileOutput), Toast.LENGTH_SHORT).show();
}
}
네이티브 카메라 앱. 그러나, 나는이 코드를 포기할 때까지 결국 당신을 경계해야한다. 왜냐하면 내가 제공 한 것보다 더 많은 융통성과 의존성이 필요하기 때문이다. (나는이 전화기를 여러 대의 전화기에서 사용한다면 한 가지 이유로 문제가 있다는 것을 알 수있다. 예를 들어 삼성의 UI 사용자 정의로 인해 많은 문제가 발생 했으므로 모든 전화기에서 작동하지만 삼성에서는 문제가 없습니다. 그래서 나는 내 카메라 앱을 만들었지 만, 응용 프로그램에 따라 잘 될지도 모르겠다. 어느쪽으로 든 .... 행운을 빌어 요!:-)
이 좋아, 여기 내가 사용하는 내 파일 입출력 클래스입니다, 죄송합니다 내가 처음이 포함되지 않았다
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import android.util.Log;
public class FileIO {
private static final int BUFFER_SIZE = 1024 * 2;
public FileIO() {
// Utility class.
}
public int copy(InputStream input, OutputStream output) throws Exception, IOException {
byte[] buffer = new byte[BUFFER_SIZE];
BufferedInputStream in = new BufferedInputStream(input, BUFFER_SIZE);
BufferedOutputStream out = new BufferedOutputStream(output, BUFFER_SIZE);
int count = 0, n = 0;
try {
while ((n = in.read(buffer, 0, BUFFER_SIZE)) != -1) {
out.write(buffer, 0, n);
count += n;
}
out.flush();
} finally {
try {
out.close();
} catch (IOException e) {
Log.e(e.getMessage(), null);
}
try {
in.close();
} catch (IOException e) {
Log.e(e.getMessage(), null);
}
}
return count;
}
}
나는 매우 비슷한 질문이 있습니다. 누구든지이 답변을 수 있습니까? –