2014-02-24 55 views
0

我想在这里做一个朗读菜单选项。这是我写的代码。但它并不真正朗读卡片上的文字。该文件说,如果卡上有任何文本,它会大声朗读。我的卡上有一些文字:菜单选项朗读不起作用

newcard.setText("text");

MenuActivity这就叫这个样子的。

import org.json.JSONException; 
import org.json.JSONObject; 

import android.app.Activity; 
import android.content.Intent; 
import android.view.Menu; 
import android.view.MenuInflater; 
import android.view.MenuItem; 

public class MenuActivity extends Activity { 

    public Object json(int menuid) 
    { 
     JSONObject obj = new JSONObject(); 
     try { 
      System.out.println("goes into try of json"); 
      obj.put("text", "Hello World"); 
      obj.put("menuItems", new JSONObject().put("action", "READ_ALOUD")); 
      System.out.println(obj); 
     } catch (JSONException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
     return obj; 
    } 

    @Override 
    public void onAttachedToWindow() { 
     super.onAttachedToWindow(); 
     openOptionsMenu(); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     MenuInflater inflater = getMenuInflater(); 
     inflater.inflate(R.menu.second, menu); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle item selection. 
     switch (item.getItemId()) { 
      case R.id.read_aloud_menu_item: 
       System.out.println("goes itno read aloud case"); 
       json(item.getItemId()); 

       return true; 
      default: 
       return super.onOptionsItemSelected(item); 
     } 
    } 

    @Override 
    public void onOptionsMenuClosed(Menu menu) { 
     // Nothing else to do, closing the activity. 
     finish(); 
    } 
} 

我真的不确定是否可以通过这样的JSON。如果不是这样,我该怎么办?

回答

0

我不知道你在哪里读到,玻璃会自动读取这个大声...

您应该使用TextToSpeech为谷歌提供的gdk-compass-sample

Activity

public class MenuActivity extends Activity { 
    private TextToSpeech mSpeech; 
    ... 
} 

初始化在OnCreate

@Override 
public void onCreate() { 
    super.onCreate(); 
    ... 
    mSpeech = new TextToSpeech(this, new TextToSpeech.OnInitListener() { 
     @Override 
     public void onInit(int status) { 
      // Do nothing. 
     } 
    }); 
} 

调用speak功能在您的onOptionsItemSelected事件创建一个域

mSpeech.speak(json(item.getItemId()).text, TextToSpeech.QUEUE_FLUSH, null); 

关闭一切都在onDestroy下降事件

@Override 
public void onDestroy() { 
    mSpeech.shutdown(); 
    mSpeech = null; 
    super.onDestroy(); 
} 
+0

对不起,我是一个菜鸟,但什么是 mSpeech.speak文本(JSON(item.getItemId())的文本,TextToSpeech.QUEUE_FLUSH,空); 它给出一个错误,所以它不是在obj.put文本(“文本”,“你好世界”); – Chirag

+0

它抛出了什么错误?试试:mSpeech.speak(“hello”,TextToSpeech.QUEUE_FLUSH,null);如果这能起作用,请检查你为什么没有找到正确的文本......如果你想知道它到底是什么,那么首先要深入文档,如果你没有得到它,请在这里提出你的问题。 – Ferdau

+0

好的,我按照建议试过,它甚至没有读“你好”。我一定会通过文件进一步了解。 – Chirag