3

我最近开始学习Android,我想制作一个从相机意图中拍摄照片并将其发送到服务器的应用程序,但我只能拍照。有人可以帮助我吗?现在放置代码。客户...

public class SendPhoto extends Activity {

private int CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE = 0;

@Override
public void onCreate(Bundle savedInstanceState) {
    int i;
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);


    File file = new File(Environment.getExternalStorageDirectory(), "temp/test.jpg");
    Uri outputFileUri = Uri.fromFile(file);


    intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);
    // start the image capture Intent

    startActivityForResult(intent, CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE);


 protected void onActivityResult(int requestCode, int resultCode, Intent data) {
   int i;
    if (requestCode == CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE) {
        if (resultCode == RESULT_OK) {

                try{
                FileInputStream fis = new FileInputStream("sd/temp/test.jpg");

                Socket sock = new Socket ("hostname",3333);
                DataOutputStream os = new DataOutputStream(sock.getOutputStream());
                while ((i = fis.read()) > -1)
                    os.write(i);

                fis.close();
                os.close();
                sock.close();
                } catch (Exception e) {
                    e.printStackTrace();

                }

        }
    }
}

服务器...

public class Server {

/**
 * @param args
 * @throws Exception 
 */
public static void main(String[] args) throws Exception {
    // TODO Auto-generated method stub

    ServerSocket socket = new ServerSocket(3333);
    System.out.println("Server started. Listening to the port 3333");
    while (true) {

        Socket clientSocket = socket.accept();

        DataInputStream dis = new DataInputStream(clientSocket.getInputStream());
        FileOutputStream fout = new FileOutputStream("output.jpg");
        int i;
        while ( (i = dis.read()) > -1) {
            fout.write(i);
        }

        DataOutputStream outToClient= new DataOutputStream(clientSocket.getOutputStream());
        outToClient.writeBytes("Hello");
        fout.flush();
        fout.close();
        dis.close();
        clientSocket.close();

}

}
}

谢谢你。

4

1 回答 1

0

不要对文件输出流中的文件名进行硬编码。很可能是不正确的。

利用

Uri uri = data.getData();

获取所拍照片的uri。“data”是onActivityResult方法的Intent参数。

或使用:

String[] projection = { MediaStore.Images.Media.DATA };
Cursor cursor = managedQuery(mCapturedImageURI, projection, null, null, null);
int column_index_data = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToFirst();

//THIS IS WHAT YOU WANT!
String capturedImageFilePath = cursor.getString(column_index_data);
于 2012-11-12T12:18:11.853 回答