我是Android開發的初學者。我試圖創建的是一個應用程序,然後等待您的答案,以便將它的文本轉換爲語音作品,然後激活語音識別和與我的代碼文本到語音作品然後它調用語音識別。然後顯示一個錯誤信息,catch塊被執行。
問題是我必須在一個單獨的類中添加語音識別,然後在Adapter not Main Activity中添加一個Object。語音識別將無法工作,因爲Android的語音識別的所有教程都添加了主要活動中的代碼,並且我正在使用適配器中調用的類來執行此操作。Android語音識別不會在單獨的類中工作
UPDATE startActivityForResult()方法是不工作
下面是SpeechRecogntion類
public class SpeechRecog extends Activity {
private static final int VOICE_RECOGNITION_REQUEST_CODE = 1001;
String textResult ;
public void Start (Intent i , Context c){
i = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
i.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, "en-US");
i.putExtra(RecognizerIntent.EXTRA_MAX_RESULTS, 1);
i.putExtra(RecognizerIntent.EXTRA_PROMPT, "Are You Done , yet? ");
try{
startActivityForResult(i,VOICE_RECOGNITION_REQUEST_CODE);
} catch(Exception e) {
Toast.makeText(c, "SpeechRecogntion is not avalible on your device ", Toast.LENGTH_LONG).show();
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if ((requestCode == VOICE_RECOGNITION_REQUEST_CODE)&& (resultCode== RESULT_OK)) {
textResult= data.getStringExtra(RecognizerIntent.EXTRA_RESULTS);
if (checkResult())
Toast.makeText(getApplicationContext(), "You are done ", Toast.LENGTH_LONG).show();
else
Toast.makeText(getApplicationContext(), "You are not done ", Toast.LENGTH_LONG).show();
}
super.onActivityResult(requestCode, resultCode, data);
}
private boolean checkResult() {
if (textResult.equals("done")||(textResult.equals("yes")))
return true ;
return false;
}
}
的代碼和這裏是它在適配器類對象
private SpeechRecog mySP;
private Intent mySpIntetn ;
public ListAdapterClass(Context context) {
mytts = new TxtToSpeechClass(context);
mySP = new SpeechRecog();
}
而這裏是我的問題依賴,在上clicklistener適配器類
Lh.btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v)
{
if (Lh.btn.getText().equals("Play"))
{
Lh.btn.setText("Pause"); //change the btn status so user know how to stop it
List<Items> hResults=db.getAllItems(Lh.idList + 1);
for (int i = 0; i < hResults.size(); i++)
{
Items item = hResults.get(i);
String s = item.getItemname();
mytts.Talk(s,1);
mySP.Start(mySpIntetn , context); //the code in here wont work is there something I'm missing here
Toast.makeText(context,s, Toast.LENGTH_SHORT).show();
}
mytts.Talk("Congrats ",1);// 1 means Queue_add
} else {
Lh.btn.setText("Play");
mytts.Talk("See you later", 0); // 0 means Queue_Flush
}
}
);
什麼不行? –
那麼語音識別不起作用.. – Sophia
startActivityForResult()語音識別顯示錯誤,你可以檢查出來嗎?在android.content.ContextWrapper.getApplicationContext(ContextWrapper.java:101) 主要 顯示java.lang.NullPointerException 在com.example.vozapplication.SpeechRecog: – Sophia