java - How to reliably take a photo in Android? -


i trying take photo in android app, convert jpeg, upload web service. far got following:

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();              // response             bufferedreader rd = new bufferedreader(new inputstreamreader(conn.getinputstream()));             string line;             while ((line = rd.readline()) != null) {                 // process line...             }             wr.close();             rd.close();              break;     } } 

the seems work, e.g. doesn't crash. in bitmap photo variable. compress using bytearrayoutputstream , becomes 5103 bytes (in buffer). convert char array (so can sent) , char array becomes 4758 elements. not sure why (probably line char [] dataaschar = new string(data).tochararray();). , of course once image makes on other side it's corrupted.

what missing here?

edit. per suggestion @digitaljoel, chucked outputstreamwriter , replaced

outputstream os = conn.getoutputstream(); os.write(data); 

new string(bitmapdata ).tochararray() seems bad idea me. don't think can expect bytes jpeg shoved string without corruption happening. so, why not write bytes outputstream instead of wrapping in outputstreamwriter?


Comments

Popular posts from this blog

java - Play! framework 2.0: How to display multiple image? -

gmail - Is there any documentation for read-only access to the Google Contacts API? -

php - Controller/JToolBar not working in Joomla 2.5 -