Android手机拍照、图库多选图上传是手机APP中常用的功能,它使得用户能够轻松地将手机中的照片上传到互联网上。本文将介绍这一功能的实现步骤。

首先,我们需要在AndroidManifest.xml文件中添加以下权限:
```
```
然后,在MainActivity中添加以下代码:
```java
private static final int PICK_IMAGE_REQUEST = 1;
private static final int CAMERA_REQUEST = 2;
private Uri mImageUri;
Button btnChoose, btnCamera, btnUpload;
ImageView imageView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnChoose = (Button) findViewById(R.id.btnChoose);
btnCamera = (Button) findViewById(R.id.btnCamera);
btnUpload = (Button) findViewById(R.id.btnUpload);
imageView = (ImageView) findViewById(R.id.imageView);
btnChoose.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent, "Select Picture"), PICK_IMAGE_REQUEST);
}
});
btnCamera.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
File photoFile = null;
try {
photoFile = createImageFile();
} catch (IOException ex) {
// Error occurred while creating the File
}
if (photoFile != null) {
mImageUri = FileProvider.getUriForFile(MainActivity.this,
"com.example.android.fileprovider",
photoFile);
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, mImageUri);
startActivityForResult(takePictureIntent, CAMERA_REQUEST);
}
}
}
});
btnUpload.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO: Upload image to server
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == PICK_IMAGE_REQUEST && resultCode == RESULT_OK && data != null && data.getData() != null) {
mImageUri = data.getData();
try {
Bitmap bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), mImageUri);
imageView.setImageBitmap(bitmap);
} catch (IOException e) {
e.printStackTrace();
}
}
if (requestCode == CAMERA_REQUEST && resultCode == RESULT_OK) {
try {
Bitmap bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), mImageUri);
imageView.setImageBitmap(bitmap);
} catch (IOException e) {
e.printStackTrace();
}
}
}
private File createImageFile() throws IOException {
// Create an image file name
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
String imageFileName = "JPEG_" + timeStamp + "_";
File storageDir = getExternalFilesDir(Environment.DIRECTORY_PICTURES);
File image = File.createTempFile(
imageFileName, /* prefix */
".jpg", /* suffix */
storageDir /* directory */
);
// Save a file: path for use with ACTION_VIEW intents
String mCurrentPhotoPath = image.getAbsolutePath();
return image;
}
```
以上代码实现了三个按钮的功能:选择图片、拍照、上传图片。在选择图片时,打开系统的图库应用,让用户选择一张图片;在拍照时,打开相机应用,让用户拍照;上传图片的功能需要开发者自行实现。
在实现选择图片和拍照功能时,需要注意Android 7.0及以上版本的权限问题。在Android 7.0中,系统不再允许使用file:// URI 访问其他应用的文件,应使用FileProvider来共享文件,具体操作可以参考Android官方文档。
总之,实现Android拍照、图库多选图上传功能并不难,开发者只需要按照以上步骤进行操作即可。