【发布时间】:2017-02-26 21:18:49
【问题描述】:
在我的代码中,我使用意图拍照,但我真的不明白在那之后我可以从哪里获得这张图片。我在这个小应用程序中的目标是拍照,然后用这张照片更新 ImageView(并以其他意图打开谷歌地图)。这两个功能通过 2 个按钮激活。
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? -
我只是说你打电话给
startActivityForResult,那么你在哪里尝试“捕捉”这个结果? -
有人回答了,我不明白的一点是:为什么它有效?我们无处调用这个方法不是吗?那么为什么它会起作用呢?
标签: java android android-intent imageview