我送你的代碼對於這一點,希望如此樂於助人, MainActivity.java:
package com.example.imagecamera;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.net.URL;
import java.util.Date;
import java.util.List;
import com.amazonaws.auth.BasicAWSCredentials;
import com.amazonaws.services.s3.AmazonS3Client;
import com.amazonaws.services.s3.model.GeneratePresignedUrlRequest;
import com.amazonaws.services.s3.model.ListObjectsRequest;
import com.amazonaws.services.s3.model.ObjectListing;
import com.amazonaws.services.s3.model.PutObjectRequest;
import com.amazonaws.services.s3.model.ResponseHeaderOverrides;
import com.amazonaws.services.s3.model.S3ObjectSummary;
import android.app.Activity;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.os.StrictMode;
import android.provider.MediaStore;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Toast;
public class MainActivity extends Activity implements OnClickListener {
private final int CAMERA_RESULT = 1;
AmazonS3Client s3Client;
private final String Tag = getClass().getName();
Button button1, button2;
ImageView imageView1;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button1 = (Button) findViewById(R.id.button1);
button2 = (Button) findViewById(R.id.button2);
imageView1 = (ImageView) findViewById(R.id.imageView1);
button1.setOnClickListener(this);
button2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
s3Client = new AmazonS3Client(new BasicAWSCredentials(
"AKIAJIJQGCIZE26IG4SQ",
"TiZiqjWRSBMZXDqA7Tnue2IPmI1qUDHQkVldABJR"));
ListObjectsRequest listObjectsRequest = new ListObjectsRequest()
.withBucketName(Constants.BUCKET_NAME).withPrefix(
"processedfiles/pixel");
ObjectListing objectListing;
do {
objectListing = s3Client.listObjects(listObjectsRequest);
for (S3ObjectSummary objectSummary : objectListing
.getObjectSummaries()) {
System.out.println(" - " + objectSummary.getKey()
+ " " + "(size = " + objectSummary.getSize()
+ ")");
Log.e("objects", objectSummary.getKey());
}
listObjectsRequest.setMarker(objectListing.getNextMarker());
} while (objectListing.isTruncated());
}
});
}
public void onClick(View v) {
PackageManager pm = getPackageManager();
if (pm.hasSystemFeature(PackageManager.FEATURE_CAMERA)) {
Intent i = new Intent(
android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
i.putExtra(MediaStore.EXTRA_OUTPUT,
MyFileContentProvider.CONTENT_URI);
startActivityForResult(i, CAMERA_RESULT);
} else {
Toast.makeText(getBaseContext(), "Camera is not available",
Toast.LENGTH_LONG).show();
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Log.i(Tag, "Receive the camera result");
if (resultCode == RESULT_OK && requestCode == CAMERA_RESULT) {
File out = new File(getFilesDir(), "newImage.jpg");
if (out.exists()) {
try {
if (android.os.Build.VERSION.SDK_INT > 9) {
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder()
.permitAll().build();
StrictMode.setThreadPolicy(policy);
s3Client = new AmazonS3Client(new BasicAWSCredentials(
"AKIAJIJQGCIZE26IG4SQ",
"TiZiqjWRSBMZXDqA7Tnue2IPmI1qUDHQkVldABJR"));
PutObjectRequest por = new PutObjectRequest(
Constants.BUCKET_NAME, "processedfiles/pixel/"
+ "010test1" + ".jpg", out);
s3Client.putObject(por);
Log.e("out", "exist");
}
} catch (Exception e) {
Log.e("out", e.toString());
Toast.makeText(getApplicationContext(), e.toString(), 5000)
.show();
}
}
if (!out.exists()) {
Toast.makeText(getBaseContext(),
"Error while capturing image", Toast.LENGTH_LONG)
.show();
return;
}
Bitmap mBitmap = BitmapFactory.decodeFile(out.getAbsolutePath());
imageView1.setImageBitmap(mBitmap);
}
}
@Override
protected void onDestroy() {
super.onDestroy();
imageView1 = null;
}
}
另一個類Constants.java:
public class Constants {
public static final String AWS_ACCOUNT_ID = "361005331374";
public static final String COGNITO_POOL_ID = "us-east-1:9ccba6ed-7c1c-4c9b"
// Note, the bucket will be created in all lower case letters
// If you don't enter an all lower case title, any references you add
// will need to be sanitized
public static final String BUCKET_NAME = "kiawebsite";
}
aother類圖像從相機中取出 MyFileContentProvider.java:
package com.example.imagecamera;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.HashMap;
import android.content.ContentProvider;
import android.content.ContentValues;
import android.database.Cursor;
import android.net.Uri;
import android.os.ParcelFileDescriptor;
public class MyFileContentProvider extends ContentProvider {
public static final Uri CONTENT_URI = Uri
.parse("content://com.example.imagecamera/");
private static final HashMap<String, String> MIME_TYPES = new
static {
MIME_TYPES.put(".jpg", "image/jpeg");
MIME_TYPES.put(".jpeg", "image/jpeg");
}
@Override
public boolean onCreate() {
try {
File mFile = new File(getContext().getFilesDir(), "newImage.jpg");
if (!mFile.exists()) {
mFile.createNewFile();
}
getContext().getContentResolver().notifyChange(CONTENT_URI, null);
return (true);
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
@Override
public String getType(Uri uri) {
String path = uri.toString();
for (String extension : MIME_TYPES.keySet()) {
if (path.endsWith(extension)) {
return (MIME_TYPES.get(extension));
}
}
return (null);
}
@Override
public ParcelFileDescriptor openFile(Uri uri, String mode)
throws FileNotFoundException {
File f = new File(getContext().getFilesDir(), "newImage.jpg");
if (f.exists()) {
return (ParcelFileDescriptor.open(f,
ParcelFileDescriptor.MODE_READ_WRITE));
}
throw new FileNotFoundException(uri.getPath());
}
@Override
public Cursor query(Uri url, String[] projection, String selection,
String[] selectionArgs, String sort) {
throw new RuntimeException("Operation not supported");
}
@Override
public Uri insert(Uri uri, ContentValues initialValues) {
throw new RuntimeException("Operation not supported");
}
@Override
public int update(Uri uri, ContentValues values, String where,
String[] whereArgs) {
throw new RuntimeException("Operation not supported");
}
@Override
public int delete(Uri uri, String where, String[] whereArgs) {
throw new RuntimeException("Operation not supported");
}
}
謝謝,不是那樣的。你閱讀這個問題,並詢問是否有人錯過理解的句子。 – Sakthi