Сначала я использую этот код для сохранения фотографии на SD-карту Android :
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
}
}
. Это работает на моем LG Optimus V под управлением Android 2.2.2 и Droid X под управлением Android 2.3.4
Однако -пользователь, у которого HTC Evo с версией 2.3.4, (то же, что и мой Droid X ), сталкивается с тем, что все загруженные ею фотографии зашифровываются при сохранении на телефоне (и при получении на сервер ). Изображение выглядит как набор неровных цветных линий.
Любые идеи о том, что может происходить здесь и что можно сделать, чтобы решить проблему?
Я смог получить доступ к этому телефону, и когда я вытаскиваю файлы jpg с SD-карты, он говорит, что файлы имеют размер 3,5 -4,0 МБ, но их нельзя открыть и они могут быть повреждены... но файлы на остальные телефоны работают нормально.