菜单选项朗读不起作用

时间:2014-02-24 10:18:09

标签: java google-glass

我正在尝试在这里制作朗读菜单选项。这是我写的代码。但它并没有真正朗读卡片上的文字。该文件说,如果卡上有任何文字设置,它将大声朗读。我的卡上有一些文字:

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。如果不是这样,我还能怎么做呢?

1 个答案:

答案 0 :(得分:0)

我不确定你在哪里读到Glass会自动朗读这个......

您应该像使用Google提供的gdk-compass-sample一样使用TextToSpeech

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();
}