0
我正在使用musicg庫來比較兩個音頻聲音。其中一個被保存,另一個被記錄檢測到。 musicg庫有whistle演示;我編輯它是工作,因爲我想要的。問題是當我想要檢測到的聲音[這是一個緩衝]轉換爲wav,並得到它的fingurprint,它返回nullpointerexption。比較Android中的兩個聲音
這是MainAcivity.java
公共靜態波W1;
InputStream sw1 = getBaseContext()。getResources()。openRawResource(R.raw.top_of_the_world_rec);
w1 = new Wave(sw1);
並且這在DetectorThread.java
InputStream obj = new ByteArrayInputStream(buffer);
Wave woo = new Wave(obj);
if (woo.toString() == null)
Log.i("", "recoded sound is null");
if (MainActivity.w1.toString() == null)
Log.i("", "the detected sound is null");
try {
similarity = woo.getFingerprintSimilarity(MainActivity.w1);/// this couse null pointer exption
Log.i("", "1-" + similarity); // not appear
if (similarity == null) { // not enter this if at all ~!
Log.i("", "lolol" + similarity);
TheSemilarityISnull = true;
}
}
catch (NullPointerException n) {
Log.i("", "first error");
TheSemilarityISnull = true;
}
// EnD of addition
Log.i("", "2-" + similarity); //appear 2-null
// byte[] io = MainActivity.w1.getFingerprint(); // good no problem
// Log.i("", "00-"+io); // apear bk09823 like this
try {
Log.i("", "0-");
byte[] po = woo.getFingerprint(); // ~> this couse null pointer exption
Log.i("", "0-" + po);
if (po == null)
Log.i("", "fingurprint for detected sound is null ");//not appear
byte[] io = MainActivity.w1.getFingerprint();
Log.i("", "00-" + io);
if (io == null)
Log.i("", "fingurprint for recorded sound is null");//not appear
double scoure = new FingerprintSimilarityComputer(po, io).getFingerprintsSimilarity().getSimilarity();
} catch (Exception e) {
Log.i("", "second error ");
}
左右;
1-how to byte [] to wav?
2,我可以調用class或Mothed內部線程嗎? Becouse我不知道,每次我打電話給他們其中一個都沒有發現任何東西!
3-我根本不編輯記錄線程>是否會引起問題? 請幫助我。
對於你的第一個問題。 [見這裏](http://stackoverflow.com/questions/731120/convert-byte-array-to-wav-java)。 – yiabiten 2015-03-31 08:46:05
我沒有得到我的答案...問題是當我想要轉換緩衝區 - 類中的變量檢測到線程 - 浪潮它couse nullpointerexption! – user3495695 2015-03-31 17:14:48