在我的代碼中我使用了一個意圖拍照,但我真的不明白我在哪裏可以得到這個圖像。我在這個小應用程序中的目標是拍攝一張照片,然後用這張照片更新ImageView(並打開帶有其他意圖的Google地圖)。這兩個功能通過2個按鈕激活。如何從圖庫(或繪圖)獲取圖像以更新ImageView?
MainActivity.java:
import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.EditText;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
static final int REQUEST_IMAGE_CAPTURE = 1;
public void activerCamera(View view) {
Intent prendrePhoto = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
if (prendrePhoto.resolveActivity(getPackageManager()) != null) {
startActivityForResult(prendrePhoto, REQUEST_IMAGE_CAPTURE);
}
}
public void googleMaps(View view) {
EditText nameField = (EditText) findViewById(R.id.name_field);
String name = nameField.getText().toString();
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("geo:" + name));
if (intent.resolveActivity(getPackageManager()) != null) {
startActivity(intent);
}
}
}
我activity_main.xml中:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.example.android.photoapp.MainActivity">
<EditText
android:id="@+id/name_field"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="Exemple : 47.6, -122.3"
android:layout_gravity="center_horizontal"
android:layout_marginTop="24dp"/>
<Button
android:layout_marginTop="24dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Aller sur google maps"
android:layout_gravity="center_horizontal"
android:textAllCaps="true"
android:onClick="googleMaps"/>
<Button
android:layout_marginTop="24dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Prendre une photo"
android:layout_gravity="center_horizontal"
android:textAllCaps="true"
android:onClick="activerCamera"/>
<ImageView
android:id="@+id/imageFondEcran"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
我在很多論壇看到和教程像這樣(下)的一些方法,但我不能讓它工作正確
@Override public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (data != null) {
Uri photoUri = data.getData();
// Do something with the photo based on Uri
Bitmap selectedImage = MediaStore.Images.Media.getBitmap(this.getContentResolver(), photoUri);
// Load the selected image into a preview
ImageView ivPreview = (ImageView) findViewById(R.id.ivPreview);
ivPreview.setImageBitmap(selectedImage);
} }
爲什麼你的班級沒有'onActivityResult'方法?你絕對需要這個。 –
你是怎麼做到的?這與'startActivityForResult'不一樣?我應該在哪裏設置該方法'onActivityResult'? – Hix
我只是說你叫'startActivityForResult',所以你在哪裏試着「捕捉」那個結果? –