2015-11-07 2 views
0

Просто интересно, может ли кто-нибудь помочь мне понять это как Im, крупный новичок с java. То, что я хотел бы сделать, - сделать снимок, когда я нажимаю кнопку, и после этого она будет отображаться в новом действии. До сих пор я работаю, когда нажимаю кнопку, которую открывает камера, фотографирует ее в мою галерею, а затем возвращает меня к той же активности. Любая помощь приветствуется!Как отобразить изображение, сделанное в новой деятельности

Это мой mainactivity.java файл

package com.example.appname; 

import android.app.Activity; 
import android.content.Context; 
import android.content.Intent; 
import android.os.Bundle; 
import android.os.Environment; 
import android.provider.MediaStore; 
import java.io.File; 
import java.text.SimpleDateFormat; 
import java.util.Date; 
import java.util.Locale; 

public class MainActivity extends Activity { 

private File mFileUri; 
private final Context mContext = this; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 

    mFileUri = getOutputMediaFile(1); 

    intent.putExtra(MediaStore.EXTRA_OUTPUT, mFileUri); 

    // start the image capture Intent 
    startActivityForResult(intent, 100); 
    } 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent imageReturnedIntent) { 
    super.onActivityResult(requestCode, resultCode, imageReturnedIntent); 

    if (resultCode == RESULT_OK) { 
     if (mFileUri != null) { 
      String mFilePath = mFileUri.toString(); 
      if (mFilePath != null) { 
       Intent intent = new Intent(mContext, CamActivity.class); 
       intent.putExtra("filepath", mFilePath); 
       startActivity(intent); 



      } 
     } 
    }    
} 


// Return image/video 
private static File getOutputMediaFile(int type) { 

    // External sdcard location 
    File mediaStorageDir = new File(Environment.getExternalStorageDirectory(), "DCIM/Camera"); 

    // Create the storage directory if it does not exist 
    if (!mediaStorageDir.exists()) { 
     if (!mediaStorageDir.mkdirs()) { 
      return null; 
     } 
    } 

    // Create a media file name 
    String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.getDefault()).format(new Date()); 
    File mediaFile; 
    if (type == 1) { // image 
     mediaFile = new File(mediaStorageDir.getPath() + File.separator + "IMG_" + timeStamp + ".jpg"); 
    } else if (type == 2) { // video 
     mediaFile = new File(mediaStorageDir.getPath() + File.separator + "VID_" + timeStamp + ".mp4"); 
    } else { 
     return null; 
    } 

    return mediaFile; 
} 
} 

Это мой activity_main.xml файл

<RelativeLayout 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:background="#000" 
android:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
tools:context="com.example.appname.MainActivity" > 

<Button 
    android:id="@+id/button1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_centerHorizontal="true" 
    android:layout_centerVertical="true" 
    android:minHeight="50dp" 
    android:minWidth="120dp" 
    android:onClick="@id/activity_cam" 
    android:text="@string/LetsBegin" /> 

    <ImageView 
    android:id="@+id/imageView1" 
    android:layout_width="200dp" 
    android:layout_height="400dp" 
    android:layout_below="@+id/button1" 
    android:layout_centerHorizontal="true" 
    android:layout_marginTop="31dp" 
    android:src="@drawable/abc_ab_share_pack_mtrl_alpha" /> 

</RelativeLayout> 

Это мой CamActivity.java, который не имеет ничего на нем, но с видом изображения, и это где я хотел бы, чтобы изображение показывалось после того, как камера сохраняет фотографию

package com.example.appname; 

import android.app.Activity; 
import android.content.Intent; 
import android.graphics.Bitmap; 
import android.graphics.BitmapFactory; 
import android.os.Bundle; 
import android.widget.ImageView; 

import java.io.File; 

public class CamActivity extends Activity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_cam); 

    Intent intent = getIntent(); 
    String filepath = intent.getStringExtra("filepath"); 
    BitmapFactory.Options options = new BitmapFactory.Options(); 
    options.inSampleSize = 8; // down sizing image as it throws OutOfMemory Exception for larger images 
    filepath = filepath.replace("file://", ""); // remove to avoid BitmapFactory.decodeFile return null 
    File imgFile = new File(filepath); 
    if (imgFile.exists()) { 
     ImageView imageView = (ImageView) findViewById(R.id.imgphoto); 
     Bitmap bitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath(), options); 
     imageView.setImageBitmap(bitmap); 
     } 
    } 


} 

Моя деятельность _cam.xml файл

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:id="@+id/activity_cam" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
tools:context="com.example.isyourfriendaterrorist.CamActivity" > 

<ImageView 
    android:id="@+id/imgphoto" 
    android:layout_width="200dp" 
    android:layout_height="200dp" 
    android:layout_centerHorizontal="true" 
    android:layout_centerVertical="true" 
    android:contentDescription="@string/imageview"/> 

</RelativeLayout> 

ответ

1

Вы должны иметь следующее:

@Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent imageReturnedIntent) { 
     super.onActivityResult(requestCode, resultCode, imageReturnedIntent); 

     if (resultCode == RESULT_OK) { 
      if (mFileUri != null) { 
       String mFilePath = mFileUri.toString(); 
       if (mFilePath != null) { 
        Intent intent = new Intent(mContext, SecondActivity.class); 
        intent.putExtra("filepath", mFilePath); 
        startActivity(intent); 
       } 
      } 
     }    
    } 

Пожалуйста, прочитайте мой ответ с примерами кода на следующий вопрос (я использую Android Studio, не Eclipse, но я думаю, что это легко чтобы вы поняли):

How to move image captured with the phone camera from one activity to an image view in another activity?

Надеюсь, это поможет!

+0

эй я посмотрел на ваш ответ в другом примере и полностью изменил свой ответ, если вы посмотрите на код выше. Теперь он открывает камеру, снимает фотографию, сохраняет на SD-карту и переходит к новой активности. Но он не отображает изображение на изображении :(Пожалуйста, помогите! – Essentialz

+0

Если у вас есть много файлов 'activity_cam.xml', если у вас есть много файлов' activity_cam.xml' или нет, проверьте их содержимое, если нет, попробуйте отладить приложение? , попробуйте создать новый пустой проект со всеми моими исходными кодами из 'UPDATE WIH FULL SOURCE CODE (NEW PROJECT):' to 'END OF NEW PROJECT' – BNK

+0

эй, я получил его сейчас! :), но теперь появилась еще одна проблема :(lol, когда я открываю приложение и снимаю pic через портретный режим, он всегда отображается горизонтально. Если я открываю камеру, удерживая телефон в портретном режиме, а затем поворачивая телефон в горизонтальном направлении, а снимок ничего не происходит, он щелкает, но он не отображает однако, если я открою приложение, поддерживающее телефон в ландшафтном режиме, и сделаю снимок, который он сохранит и отобразит изображение правильно. Любая идея, как это исправить? Еще раз спасибо :) – Essentialz

Смежные вопросы