當我按下按鈕時輸入語音為open,而輸出的結果顯示在textview上,再透過mSend按鈕傳送給電腦顯示1。
當我的textview顯示為open時,透過mSend的按鈕傳出給電腦的值我想預設成1,可是傳到電腦的值則顯示為12345,變成所有的值都傳輸出去,請各位幫幫忙。
//mSend為傳輸的按鈕
mSend.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
String s1 = "open";
String s2 = "close";
String s3 = "love";
String s4 = "total";
String s5 = "like";
if (null != view) {
TextView textView = (TextView)view.findViewById(R.id.textView);
String message = textView.getText().toString();
//做message與open的字串比對
if(s1.equals(message=="open"));
{
//傳給電腦的值顯示為1
sendMessage("1");
}
if(s2.equals(message=="close"));
{
sendMessage("2");
}
if(s3.equals(message=="love"));
{
sendMessage("3");
}
if(s4.equals(message=="total"));
{
sendMessage("4");
}
if(s5.equals(message=="like"));
{
sendMessage("5");
}
前一個問題如果已經解決了
記得要去選一個對你最有幫助的解答
#有問有選,再問不難
//做message與open的字串比對
if (message.equals(s1)) {
//傳給電腦的值顯示為1
sendMessage("1");
} else if (message.equals(s2)) {
sendMessage("2");
} else if (message.equals(s3)) {
sendMessage("3");
} else if (message.equals(s4)) {
sendMessage("4");
} else if (message.equals(s5)) {
sendMessage("5");
}
原來 Java 要用 equals,
C# string == 會直接比較字串的值。
如圖所示我在visual studio裡還是沒辦法顯示1
那個 if 不成立
因為 s1="open", 而 message="open\n" 兩者不相等
所以 if 不成立
也就不會 send 你的 1
你都用中斷點停在那列了
也可以看一下後面綠色的字
就知道為什麼 if 不成立了
那該如何把\n給去掉呢,是用message.replace("\n");嗎,這段程式有錯不知如何更改
message 和 s1 的值
都是由你設定的
message 的值是由 TextView 那裡抓來的
就去 TextView 那裡改就可以了
我之後將s1改成"open\n"此時s1="open\n"、message="open\n",但還是沒辦法在電腦端輸入1,我在debug模式中輸入語音為open時,手機出現error字串的client side error,但是在一潘的情況下輸入卻能顯示語音結果open。message的open不是自訂的是語音說出的結果顯示在textview上。
排版不好,不好意思還請幫忙謝謝。
//當我要輸入open時,textview顯示client side error
private void sendMessage(String message) {//我debug這段
// Check that we're actually connected before trying anything
if (mChatService.getState() != BluetoothChatService.STATE_CONNECTED) {
Toast.makeText(getActivity(), R.string.not_connected, Toast.LENGTH_SHORT).show();
return;
}
// Check that there's actually something to send
if (message.length() > 0) {
// Get the message bytes and tell the BluetoothChatService to write
byte[] send = message.getBytes();
mChatService.write(send);
// Reset out string buffer to zero and clear the edit text field
mOutStringBuffer.setLength(0);
}
}
//語音輸出的結果
@Override
public void onResults(Bundle results) {
Log.i(TAG, "onResults");
ArrayList<String> matches = results.getStringArrayList(SpeechRecognizer.RESULTS_RECOGNITION);
String text = "";
for (String result : matches){
text += result + "\n";
}
mtextView.setText(text);
}
感謝大大剛剛問題已解決
問題解決的話請標一下 "最佳解答"