-1

私は、ユーザーが場所にマーカーを置いてから写真を撮ることを許可しようとしています。 画像は座標と火災ベースUidの下にアップロードされます。ここ は私の現在のコードは次のとおりです。Android - GoogleマップからFirebaseに画像をアップロードするには?

final LatLng latLng = new LatLng(location.getLatitude(), location.getLongitude()); 




    ivcam.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Intent intent=new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
      startActivityForResult(intent, CAMERA_REQUEST); 
       String userUid = FirebaseAuth.getInstance().getCurrentUser().getUid(); 
       StorageReference storageRef= FirebaseStorage.getInstance().getReference(); 
       StorageReference mountainsRef = storageRef.child("uploads/") 
         .child(String.valueOf(latLng)) 
         .child(userUid) 
         .child(String.valueOf(System.currentTimeMillis())); 


      final MarkerOptions markerOptions = new MarkerOptions(); 
      markerOptions.position(latLng); 
      markerOptions.title(String.valueOf(latLng)); 
      markerOptions.draggable(false); 
      markerOptions.icon(BitmapDescriptorFactory.fromResource(R.drawable.marker3)); 
      mCurrLocationMarker = mMap.addMarker(markerOptions); 
     } 
    }); 

は、すべてのエラーはありませんが、私は写真を撮るとき、Firebaseストレージ上の何も現れません。助けてくれてありがとう。 firebase

1)で画像を格納する2つの方法があります

+0

はあなたがイメージ –

+0

をアップロードしているコードを表示するよう、依存関係を追加する必要があり、このために

private void uploadFile(Bitmap bitmap) { FirebaseStorage storage = FirebaseStorage.getInstance(); StorageReference storageRef = storage.getReferenceFromUrl("Your url for storage"); StorageReference mountainImagesRef = storageRef.child("images/" + chat_id + Utils.getCurrentTimeStamp() + ".jpg"); ByteArrayOutputStream baos = new ByteArrayOutputStream(); bitmap.compress(Bitmap.CompressFormat.JPEG, 20, baos); byte[] data = baos.toByteArray(); UploadTask uploadTask = mountainImagesRef.putBytes(data); uploadTask.addOnFailureListener(new OnFailureListener() { @Override public void onFailure(@NonNull Exception exception) { // Handle unsuccessful uploads } }).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() { @Override public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) { // taskSnapshot.getMetadata() contains file metadata such as size, content-type, and download URL. Uri downloadUrl = taskSnapshot.getDownloadUrl(); sendMsg("" + downloadUrl, 2); Log.d("downloadUrl-->", "" + downloadUrl); } }); } 

画像をアップロードしていないが、コードを上にしていますか?申し訳ありませんnew to android – Mozy

+0

下記の私の答えを確認してください:) –

答えて

0

文字列に画像を変換して、あなたのノードにその文字列を保存することです。このように

ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
    bitmap.compress(Bitmap.CompressFormat.PNG, 100, baos); 
    String imageEncoded = Base64.encodeToString(baos.toByteArray(), Base64.DEFAULT); 
    DatabaseReference ref = FirebaseDatabase.getInstance() 
      .getReference(Constants.FIREBASE_CHILD_RESTAURANTS) 
      .child(FirebaseAuth.getInstance().getCurrentUser().getUid()) 
      .child(mRestaurant.getPushId()) 
      .child("imageUrl"); 
    ref.setValue(imageEncoded); 

2)画像を直接firebase storageにアップロードすることです。あなたは

compile 'com.google.firebase:firebase-storage:9.0.2' 
+0

ありがとうございました!しかし、どちらが好ましいですか? – Mozy

+0

私はデータベースに多くの負荷をかけてはいけないと言う人もいるので、ストレージにイメージをアップロードするといいでしょう。 –

+0

申し訳ありませんが最後の質問の1つは、Utilsを解決できないと言いますか? – Mozy

関連する問題