2017-01-30 5 views
0

に音声認識後EDITTEXTに印刷されません音声認識の意図を開始し、それは以下EditTextテキストは、実行中のAndroid

の上では何も印刷されませんコードです:

import android.app.Activity; 
import android.content.ActivityNotFoundException; 
import android.content.Intent; 
import android.speech.RecognizerIntent; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.EditText; 
import android.widget.ImageButton; 
import android.widget.Toast; 

import java.util.ArrayList; 
import java.util.List; 
import java.util.Locale; 

public class dialog1cl extends AppCompatActivity { 
public EditText ed; 
    private static final int av= 0; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.dialog1); 
     ed=(EditText)findViewById(R.id.editText); 
     ImageButton im=(ImageButton)findViewById(R.id.imageButton); 
     im.setOnClickListener(new View.OnClickListener(){ 
      public void onClick(View view){ 

       promptspeech(); 
      } 
     }); 

    } 
    public void promptspeech() 
    { 
     Intent i=new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH); 
     i.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,RecognizerIntent.LANGUAGE_MODEL_FREE_FORM); 
     i.putExtra(RecognizerIntent.EXTRA_LANGUAGE, Locale.getDefault()); 
     i.putExtra(RecognizerIntent.EXTRA_PROMPT,"Say Something!"); 

     try { 
      startActivityForResult(i,av); 
     } 
     catch(ActivityNotFoundException a) 
     { 
      Toast.makeText(dialog1cl.this,"Sorry! Your device doesnt support speech Language",Toast.LENGTH_LONG).show(); 
     } 
    } 

    public void onActivityResult(int request_code , int result_code, Intent i){ 



      if(request_code ==av && result_code==RESULT_OK) 
      { 
       List<String> result=i.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS); 
ed.setText(result.get(0)); 
      } 
     super.onActivityResult(request_code, result_code, i); 

    } 
} 

XMLコード:

<?xml version="1.0" encoding="utf-8"?> 
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@color/white" 
    android:weightSum="1" 

    android:id="@+id/lin1"> 
    <ImageView 

     android:layout_width="match_parent" 
     android:layout_height="50dp" 
     android:scaleType="center" 
     android:background="#FFFFBB32" 
     android:contentDescription="PARAMETERS" /> 

    <TextView 
     android:layout_width="match_parent" 
     android:layout_height="34dp" 
     android:textSize="20dp" 
     android:textStyle="bold" 
     android:textColor = "@color/blue1" 
     android:text="Task Name?" 
     android:id="@+id/textView2" 
     android:layout_gravity="center_horizontal" /> 

    <TableRow 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 

     <EditText 
      android:layout_width="250dp" 
      android:layout_height="wrap_content" 
      android:inputType="textPersonName" 
      android:hint="Enter your Task" 
      android:ems="10" 
      android:id="@+id/editText" /> 

     <ImageButton 
      android:layout_width="40dp" 
      android:layout_height="40dp" 
      android:background="@color/white" 
      android:id="@+id/imageButton" 
      android:src="@drawable/ic_action_voice" 
      android:layout_column="22" /> 
    </TableRow> 

    <TableRow 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 

     <TextView 
      android:textAppearance="?android:attr/textAppearanceMedium" 
      android:layout_width="match_parent" 
      android:layout_height="34dp" 
      android:textSize="20dp" 
      android:textStyle="bold" 
      android:textColor = "@color/blue1" 
      android:text="DeadLine?" 
      android:id="@+id/textView3" 
      android:layout_column="0" /> 
    </TableRow> 

    <TableRow 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 

     <EditText 
      android:inputType="textPersonName" 
      android:hint="Name" 
      android:ems="10" 
      android:id="@+id/editText2" 
      android:layout_column="0" 
      android:focusable="false"/> 

     <ImageButton 
      android:layout_width="40dp" 
      android:layout_height="40dp" 
      android:src="@drawable/ic_action_calendar" 
      android:background="@color/white" 
      android:id="@+id/imageButton2" 

      android:layout_column="22" /> 
    </TableRow> 

    <TableRow 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 

     <TextView 

      android:textAppearance="?android:attr/textAppearanceMedium" 
      android:layout_width="match_parent" 
      android:layout_height="34dp" 
      android:textSize="20dp" 
      android:textStyle="bold" 
      android:textColor = "@color/blue1" 
      android:text="Time?" 
      android:id="@+id/textView4" 
      android:layout_column="0" /> 
    </TableRow> 

    <TableRow 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 

     <EditText 
      android:inputType="textPersonName" 
      android:text="Name" 
      android:ems="10" 
      android:id="@+id/editText3" 
      android:layout_column="0" /> 

     <ImageButton 
      android:layout_width="40dp" 
      android:layout_height="40dp" 
      android:src="@drawable/ic_action_time" 
      android:background="@color/white" 
      android:id="@+id/imageButton3" 

      android:layout_column="22" /> 
    </TableRow> 


</TableLayout> 

答えて

0

私はこのような間違いをお詫びします。しかし、コードが正しいと分かりましたが、テーブルレイアウト用のXMLファイルで私の背景を白くしていたので、それは印刷されていましたエディットテキスト....勿論まれな間違い...それはそこに誰かに役立ちます願っています。.. 上記のコードは、音声認識のために正常に動作します... XMLから下の部分を除外するが:

background:"@colors/white" 
0

あなたが活動から取得し、それを等しくするためのEditTextのテキストを設定し、結果を取る必要があります。これと活動の結果について

List<String> result=i.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS); 
String text = getTextFromResult(result); 
ed.setText(text); 
+0

なしありgetTextFromResult関数。 – nishchalpro

+1

あなたは自分でそれを書く必要があります。リストを、EditTextに入れたい文字列に変換する必要があります –

+0

私は仲間に変換するには – nishchalpro

1

変更あなたは、あなたがプログラム的に私はアクションバーのために働いて、それを持って、この公式のチュートリアルを使用して、あなたのエディットテキスト

public void onActivityResult(int request_code , int result_code, Intent i){ 
     if(request_code ==av && result_code==RESULT_OK) 
     { 
      List<String> result=i.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS); 

       ed.setText(result.get(0)); 
     } 
    super.onActivityResult(request_code, result_code, i); 

} 
+0

それは全く同じです! – nishchalpro

+0

あなたのスピーチが認識されない可能性があります。あなたのデバイスをインターネットに接続してみてください。 – Redman

+0

タットは良い情報でしたが、改善はありませんでした... – nishchalpro

1

にテキストを設定する必要があります。検索可能なデータとメタデータを作成しながら、細心の注意を払ってください。 https://developer.android.com/training/search/setup.html

あなたが同じアクティビティ内のテキストの結果をしたい場合は、あなたの現在の活動にSearch Intent Filterを指し、その活動singleInstanceまたはsingleTopを作ります。

+0

ありがとうございました! – nishchalpro

+0

これは別の方法です – nishchalpro

関連する問題