2016-09-26 3 views
3

Firebase를 사용하여 이미지를 저장 및 검색하려고합니다. 이미지 저장시에는 괜찮지 만 이미지 뷰에는 표시 할 수 없습니다. 실수가 어디인지 이해할 수 없으므로 오류가 발생하지 않습니다.Firebase 저장소에서 저장된 이미지 검색

public class MainActivity extends AppCompatActivity { 

private Button btnSelectImage; 
private ImageView mImageView; 

private StorageReference mStorage; 

private static final int CAMERA_REQUEST_CODE = 1 ; 

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

    btnSelectImage = (Button) findViewById(R.id.btn_image); 
    mImageView = (ImageView) findViewById(R.id.imageView); 

    //Get instance 
    mStorage = FirebaseStorage.getInstance().getReference(); 

    btnSelectImage.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

      Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
      startActivityForResult(intent, CAMERA_REQUEST_CODE); 

     } 
    }); 

} 

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

    if(requestCode==CAMERA_REQUEST_CODE && resultCode==RESULT_OK){ 

     Uri uri = data.getData(); 

     StorageReference filePath = mStorage.child("CameraPhotos").child(uri.getLastPathSegment()); 
     filePath.putFile(uri).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() { 
      @Override 
      public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) { 

       //Show image 
       Uri downloadUri = taskSnapshot.getDownloadUrl(); 
       Picasso.with(MainActivity.this).load(downloadUri).into(mImageView); 

       Toast.makeText(MainActivity.this,"Upload Done",Toast.LENGTH_SHORT).show(); 
       Log.v("Test","image load"); 

      } 
     }); 


    } 
} 
} 

이 또한 권한

다음
<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.CAMERA"/> 
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> 

줄 내 중포 기지 저장 규칙

service firebase.storage { 
    match /b/fir-app-ce89f.appspot.com/o { 
    match /{allPaths=**} { 
     allow read, write: if true; 
    } 
    } 
} 

가 여기 내 활동 레이아웃

<?xml version="1.0" encoding="utf-8"?> 
<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" 
    tools:context="com.example.yusuf.firebaseapp.MainActivity"> 

    <Button 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:text="Select Image" 
     android:id="@+id/btn_image" 
     android:layout_alignParentTop="true" 
     android:layout_centerHorizontal="true" /> 

    <ImageView 
     android:layout_width="400dp" 
     android:layout_height="350dp" 
     android:id="@+id/imageView" 
     android:layout_centerVertical="true" 
     android:layout_centerHorizontal="true" /> 
</RelativeLayout> 
+0

"업로드 완료"토스트가 보입니까? –

+0

예, 토스트와 로그 모두 ok입니다. 이미지를 성공적으로 업로드 할 수도 있습니다. – ysfcyln

+0

코드를 복사하고 Firebase 9.6.1 및 Picasa 2.5.2와 함께 실행했습니다. 이미지가 성공적으로 업로드되고 다운로드되었습니다. 어쩌면 문제는 당신의'ImageView'의 속성입니다. XML을 게시 할 수 있습니까? –

답변

6

내가 FirebaseUI 0.6에서 살펴 본다 제안이다, 어느 쪽 다음과 같이 간단하게 Firebase Storage에서 이미지를 다운로드하는 글라이드 플러그인이 포함되어 있습니다.

// Reference to an image file in Firebase Storage 
StorageReference storageReference = ...; 

// ImageView in your Activity 
ImageView imageView = ...; 

// Load the image using Glide 
Glide.with(this /* context */) 
     .using(new FirebaseImageLoader()) 
     .load(storageReference) 
     .into(imageView); 
+0

이미지가 동일한 저장소 이름과 URL을 가진 Firebase에서 업데이트되면이 코드는 이미지를 업데이트하지 않습니다. 이미지가 스토리지에서 업데이트되면 이미지 뷰에서 이미지를 업데이트 할 수있는 메커니즘이 있습니까? –

관련 문제