2016-12-30 6 views
0

私はボイスレコーダを作成するためのチュートリアルを行っています。私はチュートリアルを何度も見て、アプリケーションがFirebaseに接続されていることを確認しました。しかし、この問題のためにアプリが今はおそらく開かないでしょう。私はJavaプログラミングにはかなり新しいです。誰かが私にいくつかの指導をしてくれますか?あなたはGoogleのFirebaseサンプルに見ることができます読んFirebaseコンソールおよび更新にあなたのアプリケーションはFirebase Storageに接続しません - 開くことはできません、エラーなし

package bfb.ess.myapplicationbfb; 

import android.app.ProgressDialog; 
import android.media.MediaRecorder; 
import android.net.Uri; 
import android.os.Bundle; 
import android.os.Environment; 
import android.support.v7.app.AppCompatActivity; 
import android.util.Log; 
import android.view.MotionEvent; 
import android.view.View; 
import android.widget.Button; 
import android.widget.TextView; 

import com.google.android.gms.tasks.OnSuccessListener; 

import com.google.firebase.storage.FirebaseStorage; 
import com.google.firebase.storage.StorageReference; 
import com.google.firebase.storage.UploadTask; 

import java.io.File; 
import java.io.IOException; 

public class speakp extends AppCompatActivity { 

    private Button mRecordBtn; 
    private TextView mRecordlabel; 

    private MediaRecorder mRecorder; 

    private String mFileName = null; 

    private static final String LOG_TAG = "Record_log"; 

    private StorageReference mStorage; 


    private ProgressDialog mProgress; 


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

     mStorage = FirebaseStorage.getInstance().getReference(); 

     mRecordlabel = (TextView) findViewById(R.id.recordlabel); 
     mRecordBtn =(Button) findViewById(R.id.recordBtn); 

     mProgress = new ProgressDialog(this); 

     mFileName = Environment.getExternalStorageDirectory().getAbsolutePath(); 
     mFileName +="/recorded_audio.3gp"; 

     mRecordBtn.setOnTouchListener(new View.OnTouchListener() { 
      @Override 
      public boolean onTouch(View view, MotionEvent motionEvent) { 

       if(motionEvent.getAction() == MotionEvent.ACTION_DOWN) { 

        startRecording(); 

        mRecordlabel.setText("Recording Started ..."); 

       } else if (motionEvent.getAction() == MotionEvent.ACTION_UP) { 

        stopRecording(); 

        mRecordlabel.setText("Recording Stopped ..."); 
       } 


       return false; 
      } 
     }); 
    } 

    private void startRecording() { 
     mRecorder = new MediaRecorder(); 
     mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); 
     mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); 
     mRecorder.setOutputFile(mFileName); 
     mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); 

     try { 
      mRecorder.prepare(); 
     } catch (IOException e) { 
      Log.e(LOG_TAG, "prepare() failed"); 
     } 

     mRecorder.start(); 
    } 

    private void stopRecording() { 
     mRecorder.stop(); 
     mRecorder.release(); 
     mRecorder = null; 

     uploadAudio(); 
    } 

    private void uploadAudio() { 



     mProgress.setMessage("Uploading Audio ..."); 
     mProgress.show(); 

     StorageReference filepath = mStorage.child("Audio").child("new_audio.3gp"); 

     Uri uri = Uri.fromFile(new File(mFileName)); 

     filepath.putFile(uri).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() { 
      @Override 
      public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) { 

       mProgress.dismiss(); 

       mRecordlabel.setText("Uploading Finished"); 

      } 
     }); 

    } 
} 
+0

'しかし、この問題のためにアプリが今開いていないのはどちらですか? –

+0

Firebaseに接続されていません。 – esss123

+0

firebaseの認証が表示されません。あなたはサインインしましたか? – eurosecom

答えて

0

ゴーありがとうとストレージ

のためのルールを記述します。その適切な場合Storage Sample

オーディオファイルのURIを確認してください。私はuriのlastPathSegmentが間違っていると思います。デフォルトでは

service firebase.storage { 
    match /b/<name_of_app>/o { 
    match /{allPaths=**} { 
     allow read, write: if request.auth != null; 
    } 
    } 
} 

アップデートそれに:

service firebase.storage { 
     match /b/<name_of_app>/o { 
     match /{allPaths=**} { 
      allow read; 
      allow write; 
     } 
     } 
    } 

注: このアップデートでは、あなたが許可されていない場合でも、あなたがデータを保存することができます。 許可を得ずにデータにアクセスするというセキュリティ上の問題を引き起こす可能性があるため、開発目的のみです。 アプリをプレイストアにアップロードするときは注意してください。このパラメータを更新して、要件に応じて変更してください。あなたが読み取りを更新してfirebaseコンソールに保管するためのルールを記述する必要が

+0

コードが機能しませんでした。私はこれに変更しました: – esss123

+0

{ "rules":{ ".read":true、 ".write":true、 } } //////アプリを実行しても動作しませんでした – esss123

0

Goはデフォルトで クリックして[ルール]タブ

のコンソールで、[ストレージをFirebaseする

service firebase.storage { 
    match /b/{bucket}/o { 
    match /{allPaths=**} { 
     allow read, write: if request.auth != null; 
    } 
    } 
} 

変更:

service firebase.storage { 
    match /b/{bucket}/o { 
    match /{allPaths=**} { 
     allow read, write; 
    } 
    } 
} 

Mohom.Rは

と言っています。注:この更新プログラムでは、許可されていなくてもデータを保存できます。それは、許可を得ずにデータにアクセスするセキュリティ上の問題を引き起こす可能性があるため、開発目的にのみ使用されます。プレイストアにアプリをアップロードするときは注意してください。このパラメータを更新して、要件に応じて変更してください。

関連する問題