在一個Android應用程序的當前活動,新活動被加載時,我想用文本到語音宣佈活動的名稱。我如何獲取當前活動的名稱?安卓:得到擴展分類
我創建一個應用程序,它是是盲人訪問。我創建了一個AccessibleActivity
類,它擴展了Activity
;我創建的其他活動類擴展了這一點。
這裏是AccessibleActivity
類的準系統版本:
package com.example;
import android.app.Activity;
import com.example.TTS;
public class AccessibleActivity extends Activity {
TTS tts = new TTS(); // See below
@Override
public void onResume() {
tts.resume(getApplicationContext());
super.onResume();
}
@Override
public void onPause() {
tts.pause();
super.onPause();
}
}
這裏是由AccessibleActivity
類使用的TTS
類:
package com.example;
import android.content.Context;
import android.speech.tts.TextToSpeech;
import java.util.Locale;
public class TTS {
TextToSpeech ttobj;
public void resume(Context context) {
ttobj = new android.speech.tts.TextToSpeech(context,
new android.speech.tts.TextToSpeech.OnInitListener() {
@Override
public void onInit(int status) {
if (status != android.speech.tts.TextToSpeech.ERROR) {
ttobj.setLanguage(Locale.UK);
// THIS IS WHERE I WANT TO USE THE NAME OF THE ACTIVITY, INSTEAD OF "Welcome"
speakText("Welcome");
}
}
});
}
public void pause() {
if (ttobj != null) {
ttobj.stop();
ttobj.shutdown();
}
}
public void speakText(String toSpeak) {
ttobj.speak(toSpeak, android.speech.tts.TextToSpeech.QUEUE_FLUSH, null);
}
}
例如,假設該活動加載中...
package com.example;
public class BrailleActivity extends AccessibleActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_braille);
}
}
...和th在strings.xml
文件中包含這樣一個條目:
<string name="activity_braille">Learn to type in Braille</string>
我怎樣才能獲得標識符activity_braille
在或AccessibleActivity
類的onResume()
方法之後的某一點,從而使相應的字符串可以在onInit()
方法使用TextToSpeech
對象的?
這看起來像一個有用的方法。不幸的是,當我嘗試在onInit方法中使用context.getTitle()時出現編譯錯誤:'錯誤:(36,55)錯誤:局部變量上下文從內部類中訪問;需要宣佈最終'。 – 2014-10-30 21:54:07
...所以最終決定。我已經更新了我的答案。 – 2014-10-30 21:55:10
你是對的:'AccessibilityActivity'的設計是通用的,這樣的文字轉語音功能是提供給所有從它繼承的活動。你的'currentActivity.getTitle()'技術完全符合我的要求。謝謝。 – 2014-10-30 23:45:41