0

Speech to text エンジンを開始しようとしているサービスがありますが、機能していません。サービスから Speech to Text を開始することは可能ですか?

MyService.java クラス:

public class MyService extends Service{


OnActRes r;


EditText edittext;
//private Runnable m;

@Override
public IBinder onBind(Intent arg0) {
    // TODO Auto-generated method stub
    return null;
}




@Override
public void onCreate() {


            // TODO Auto-generated method stubry

    try
    {
               Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
               Toast.makeText(MyService.this,"STEP 1 !", Toast.LENGTH_LONG).show(); 
               intent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE, getClass().getPackage().getName());
               Toast.makeText(MyService.this,"STEP 2 !", Toast.LENGTH_LONG).show();  
               intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
               Toast.makeText(MyService.this,"STEP 3 !", Toast.LENGTH_LONG).show();  
               //since we only want one, request 1
               intent.putExtra(RecognizerIntent.EXTRA_MAX_RESULTS, 1);
               Toast.makeText(MyService.this,"STEP 4 !", Toast.LENGTH_LONG).show(); 
               intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, "en-US");
               Toast.makeText(MyService.this,"STEP 5 !", Toast.LENGTH_LONG).show();
               r.startActivityForResult(intent, 1234);
    }
    catch(Exception e)
    {
        Toast.makeText(MyService.this,"ERROR here !", Toast.LENGTH_LONG).show(); 
    }




        }

}

結果.java

public class OnActRes extends Activity {


public void onActivityResult(int requestCode, int resultCode, Intent data) {

    if (resultCode != Activity.RESULT_OK){
        {
         Toast.makeText(OnActRes.this,"AR", Toast.LENGTH_LONG).show();  

        ArrayList<String> matches = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
        String topResult = matches.get(0);

        Toast.makeText(OnActRes.this,topResult, Toast.LENGTH_LONG).show();   

}



    }

}

}

4

1 に答える 1

0

チェック/変更する必要があるいくつかのこと:

  1. コードでは、アクティビティ参照rが null です。
  2. なぜこのサービスを利用しているのですか?この場合、サービスを使用する理由はありません (バックグラウンドでは何もしません。目的は認識アクティビティを呼び出すことだけですOnActRes。アクティビティから実行できます)。

どちらも役に立たなかった場合は、認識アクティビティを使用せずに、Android の APIを使用して音声認識を試すことができます (例はこちら)。必要に応じて、これをサービスから呼び出すことができます。

于 2012-11-17T22:29:28.007 に答える