を何のミスをしていたカメラから復帰したコードですそれはややこしい。
まず第一に、私は特定の携帯電話に考えて、
intent.putExtra(MediaStore.EXTRA_OUTPUT, _imageUri);
だからあなたのための私の最高の答えがある
:-(無視され、代わりに、「EXTRA_OUTPUT」フラグを設定していません。使用、そこから、それが正常に実行して、新しい画像URIを返してみましょう:
Uri u = intent.getData();
そこから、あなたの新しい画像の情報を取得するために、私は新しいlocatiにイメージファイルを書き込むためのFileOutputStreamを使用私はそれを持っていたい。最後に、元のファイルを削除します。 :-)
私はそれが奇妙なことを知っていますが、それは動作し、かなり信頼できると思います。 :-)
私は役立つことを望みます。 :-) J @llango
-Jared
8-28-11
だけでなく、ここにあなたがいる場合コピーして貼り付け、見て歓迎している、全体のコードですが、[OK]をあなたはそれが手始めに
:-)仕事を得ることができ、あなたはこのようにカメラを呼び出すことになるでしょう:
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;
}
}
}
をし、メインの魔法は、この関数の中で起こる:その後、結果のためにあなたはこれをお勧めします、私はそれはあなたが使用して保存するために必要なすべての部品だと思う
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;
}
}
、私は非常によく似た質問があります::-)
[OK]を、ここで私が使用して私のFILEIOクラスは、私が最初にこれが含まれていませんでした申し訳ありませんのです。誰もこれに答えることができますか? –