我試圖在Android應用中拍照,將其轉換爲JPEG格式,然後將其上傳到Web服務。到目前爲止,我得到以下幾點:如何在Android中可靠地拍照?
private static final int CAMERA_REQUEST = 1888;
private void TakePhoto() {
Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(cameraIntent, CAMERA_REQUEST);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case CAMERA_REQUEST:
Bitmap photo = (Bitmap) data.getExtras().get("data");
ByteArrayOutputStream bos = new ByteArrayOutputStream();
photo.compress(Bitmap.CompressFormat.JPEG, 90, bos);
byte [] bitmapData = bos.toByteArray();
char [] dataAsChar = new String(bitmapData).toCharArray();
URL url = new URL("http://www.foo.com/bar);
URLConnection conn = url.openConnection();
conn.setDoOutput(true);
conn.setRequestProperty("Content-Type", "application/octet-stream");
OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
wr.write(dataAsChar);
wr.flush();
// Get the response
BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line;
while ((line = rd.readLine()) != null) {
// Process line...
}
wr.close();
rd.close();
break;
}
}
它本身似乎工作,例如,不會崩潰。我得到了位圖photo
變量。然後我使用ByteArrayOutputStream壓縮它,它變成大約5103字節(在緩衝區中)。然後我將它轉換爲一個char數組(以便它可以發送)並且char數組變成4758個元素。不知道這是爲什麼(可能是這條線char [] dataAsChar = new String(data).toCharArray();
)。當然,一旦圖像轉移到另一邊,它就會損壞。
我在這裏錯過了什麼?
編輯。每從@digitalJoel建議,我攆使用OutputStreamWriter與
OutputStream os = conn.getOutputStream();
os.write(data);