在一个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