2016-03-25 8 views
1

私のファイルブラウザ機能からファイルパスを取得したいが、ファイルブラウザ機能にリスナーがあるので、 、パスが空であるので、それはクラッシュになって、ここで私が呼び出したい2つの機能の関数です:リスナーがタスクを完了して別の関数の結果を取得するのを待つ[Android]

public void openFileExplorer() { 
    File mPath = new File(Environment.getExternalStorageDirectory() + "/"); 
    fileDialog = new FileDialog(this, mPath); 
    fileDialog.addFileListener(new FileDialog.FileSelectedListener() { 
     public void fileSelected(File file) { 
      Log.d(getClass().getName(), "selected file " + file.toString()); 
      chosenFile = file.toString(); 
     } 
    }); 
    fileDialog.showDialog(); 
} 

private void generateMFCC(String path) { 
    // btnBrowse.setText("Done"); 
    Log.d(getClass().getName(), ": Success"); 
    buffer = mRecorder.ReadWave(path); 
    data = new float[buffer.length]; 

    for (int i = 0; i < buffer.length; i++) { 
     data[i] = (float) buffer[i]; 
    } 
    //Toast.makeText(getApplicationContext(), "Success", Toast.LENGTH_SHORT).show(); 
    preProcess = new PreProcess(data, samplePerFreame, sampleRate); 
    featureExtract = new FeatureExtract(preProcess.framedSignal, sampleRate, samplePerFreame); 
    featureExtract.makeMfccFeatureVector(); 
    featureVector = featureExtract.getFeatureVector(); 
    double[][] fv = featureVector.getMfccFeature(); 

    for (int i = 0; i < fv.length; i++) { 
     test = test + "{" + "\n"; 
     for (int j = 0; j < fv[i].length; j++) { 
      test = test + Double.toString(fv[i][j]) + ", "; 
     } 
     test = test + "}" + "\n"; 
    }} 

は、私はこのような関数を呼び出す:

openFileExplorer(); 
generateMFCC(chosenFile); 

が、それは常にファイルの前にエラーが発生しますエクスプローラダイアログを開きます

+1

Stacktraceを投稿してください。 –

答えて

0

コールgenerateMFCCを選択することがgenerateMFCC(chosenFile);がファイルの前に *を選択しているにかかわらず、ファイルのと呼ばれている今、あなたの問題を解決するべきだと思います。

public void openFileExplorer() { 
    File mPath = new File(Environment.getExternalStorageDirectory() + "/"); 
    fileDialog = new FileDialog(this, mPath); 
    fileDialog.addFileListener(new FileDialog.FileSelectedListener() { 
     public void fileSelected(File file) { 
      Log.d(getClass().getName(), "selected file " + file.toString()); 
      chosenFile = file.toString(); 
generateMFCC(chosenFile); 

     } 
    }); 
    fileDialog.showDialog(); 
} 
+0

おかげでそれが機能します! –

+0

あなたはようこそ@Wallflower – KDeogharkar

0
public void openFileExplorer() { 
    File mPath = new File(Environment.getExternalStorageDirectory() + "/"); 
    fileDialog = new FileDialog(this, mPath); 
    fileDialog.addFileListener(new FileDialog.FileSelectedListener() { 
     public void fileSelected(File file) { 
      Log.d(getClass().getName(), "selected file " + file.toString()); 
      chosenFile = file.toString(); 
// you should call the function here 
generateMFCC(chosenFile); 
     } 
    }); 
    fileDialog.showDialog(); 
} 

はopenFileExplorerから

関連する問題