2017-03-22 9 views
-2

多くのページを持つ機能的なアプリケーションがあります。これは標準のアンドロイドカメラを開き、登録Javaページの下部にあるコードを使用します。ここで私は自分のアプリケーションにカメラ機能を実装しようとしていますが、 "実行しようとしません"

は私のコードです:

package com.example.mockups; 

import android.graphics.drawable.Drawable; 
import android.provider.MediaStore; 
import android.support.v7.app.AppCompatActivity; 
import android.view.View; 
import android.widget.ImageView; 
import android.content.Intent; 
import android.net.Uri; 
import android.os.Bundle; 
import android.widget.Button; 

import java.io.File; 


public class Register2 extends AppCompatActivity { 
    Button button; 
    ImageView imageView; 
    static final int CAM_REQUEST = 1; 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_register2); 
     button = (Button) findViewById(R.id.buttonContinue); 
     imageView = (ImageView) findViewById(R.id.imageView); 
     button.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       Intent camera_intent = new Intent (MediaStore.ACTION_IMAGE_CAPTURE); 
       File file = getFile(); 
       camera_intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri. fromFile(file)); 
       startActivityForResult(camera_intent, CAM_REQUEST); 

      } 
     }); 
    } 

    private File getFile() 
    { 
     File folder = new File("sdcard/camera"); 

     if (!folder.exists()) 
     { 
      folder.mkdir(); 
     } 

     File image_file = new File(folder, "cam_image.jpg"); 
     return image_file; 
    } 

    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     String path = "sdcard/camera/cam_image.jpg"; 
     imageView.setImageDrawable(Drawable.createFromPath(path)); 

    } 
} 
_________________________________ 

    <?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/activity_register2" 
    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.strongholdmockups.Register2"> 

    <TextView 
     android:text="Build Profile" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/buildProTitle" 
     android:textAppearance="@style/TextAppearance.AppCompat.Display1" 
     android:layout_alignParentTop="true" 
     android:layout_centerHorizontal="true" /> 

    <TextView 
     android:text="Upload Profile Picture:" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginTop="33dp" 
     android:id="@+id/textView46" 
     android:textAppearance="@style/TextAppearance.AppCompat.Body1" 
     android:layout_below="@+id/buildProTitle" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" 
     android:layout_marginLeft="36dp" 
     android:layout_marginStart="36dp" /> 

    <Button 
     android:text="Upload from Camera Roll" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginTop="21dp" 
     android:id="@+id/buttonContinue" 
     style="@android:style/Widget.Holo.Light.Button" 
     android:layout_below="@+id/textView46" 
     android:layout_alignRight="@+id/buildProTitle" 
     android:layout_alignEnd="@+id/buildProTitle" /> 

    <ImageView 
     android:id="@+id/image_view" 
     android:layout_width="350dp" 
     android:layout_height="250dp" 
     android:layout_above="@+id/continueBtn1" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" 
     android:layout_gravity="center_horizontal" /> 


    <Button 
     android:text="Continue" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginRight="23dp" 
     android:layout_marginEnd="23dp" 
     android:layout_marginBottom="14dp" 
     android:id="@+id/continueBtn1" 
     style="@style/Widget.AppCompat.Button.Borderless.Colored" 
     android:background="@color/cardview_light_background" 
     android:textAppearance="@style/TextAppearance.AppCompat.Headline" 
     android:layout_alignParentBottom="true" 
     android:layout_alignRight="@+id/image_view" 
     android:layout_alignEnd="@+id/image_view" /> 

</RelativeLayout> 


__________________ 

     <uses-permission android:name="android.permission.CAMERA" /> 
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 
+1

アプリが実行されない理由を教えてください。どのようなエラーが出ますか? –

+0

ログには何が表示されますか? – Coeus

答えて

0

あなたはAPIのバージョンが> = 23は、カメラ/外部ストレージを使用する前に、あなたのコードにこのような何かを追加するために権限が付与されているかどうかを確認する必要があります。

if (Build.VERSION.SDK_INT >= 23) { 
    if (checkSelfPermission(android.Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) { 
     Log.v(TAG,"Permission is granted"); 
     return true; 
    } else { 
     Log.v(TAG,"Permission is revoked"); 
     ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, 1); 
     return false; 
    } 
}else { //permission is automatically granted on sdk<23 upon installation 
    Log.v(TAG,"Permission is granted"); 
    return true; 
} 
+0

このコードをAndroidマニフェストに追加する必要がありますか? –

+0

いいえ、このコードをカメラ/外部ストレージを使用するアクティビティに追加します。これは、カメラの動作を開始する前に実装する必要があります。 – Cimoe

関連する問題