まず、このコードを使用して写真をAndroidのSDカードに保存します。
PictureCallback jpegCallback = new PictureCallback() {
public void onPictureTaken(byte[] data, Camera camera) {
FileOutputStream outStream = null;
currentFilename = String.format("%d", System.currentTimeMillis());
outStream = new FileOutputStream("/sdcard/" + currentFilename + ".jpg");
outStream.write(data);
outStream.close();
}
};
次に、このコードを使用してAndroidデバイスに写真をアップロードしています。
public void uploadPhoto() {
try {
// Create HttpPost
HttpPost post = new HttpPost("http://www.example.com/upload.php");
HttpClient client = new DefaultHttpClient();
client.getParams().setParameter(CoreProtocolPNames.PROTOCOL_VERSION, HttpVersion.HTTP_1_1);
MultipartEntity entity = new MultipartEntity( HttpMultipartMode.BROWSER_COMPATIBLE );
// Add the Picture as "userfile"
entity.addPart( "userfile", new FileBody(
new File( "/sdcard/", currentFilename + ".jpg" ),
"image/jpeg")
);
// Send the data to the server
post.setEntity( entity );
client.execute( post );
} catch (Exception e) {
// catch
} finally {
// finally
}
}
これは、Android2.2.2を実行しているLGOptimusVとAndroid2.3.4を実行しているDroidXで機能します。
ただし、2.3.4(私のDroid Xと同じ)を実行しているHTC Evoを使用しているユーザーは、アップロードされたすべての写真が携帯電話に保存されたとき(およびサーバーに到達したとき)にスクランブルされることを経験しています。画像はギザギザの色の線の配列のように見えます。
ここで何が起こっているのか、問題を解決するために何ができるのかについてのアイデアはありますか?
アップデート:
この電話にアクセスできました。sdcardからjpgファイルを取り出すと、ファイルのサイズは3.5〜4.0 MBと表示されますが、開くことができず、破損している可能性があります...しかし、他のファイルは電話は正常に動作します。