【发布时间】:2018-06-14 11:04:19
【问题描述】:
我有一些代码可以从网站中提取一些 JSON,我希望它循环遍历字符串值,并将它们转换为语音。
问题是,所有字符串都正确打印,但文本到语音只播放最后一个值。我怎样才能让它在遍历数组时播放每个单独的值。
这是我对代码所做的。
public class MainActivity extends AppCompatActivity {
TextToSpeech t1;
final String BASE_URL = "x";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
t1=new TextToSpeech(getApplicationContext(), new TextToSpeech.OnInitListener() {
@Override
public void onInit(int status) {
if(status != TextToSpeech.ERROR) {
t1.setLanguage(Locale.UK);
}
}
});
final JsonObjectRequest jsonRequest = new JsonObjectRequest(Request.Method.GET, BASE_URL, null, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
try {
JSONObject data = response.getJSONObject("x");
JSONArray children = data.getJSONArray("x");
for (int i = 0; i<children.length(); i++) {
JSONObject json_data = children.getJSONObject(i).getJSONObject("x");
Log.v("test", "Err:" + json_data.getString("title"));
String a = json_data.getString("title");
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
t1.speak(a,TextToSpeech.QUEUE_FLUSH,null,null);
} else {
t1.speak(a, TextToSpeech.QUEUE_FLUSH, null);
}
}
} catch (JSONException e) {
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.v("Test", "Err:" + error.getLocalizedMessage());
}
});
Volley.newRequestQueue(this).add(jsonRequest);
}
}
谢谢
【问题讨论】: