可能是一个简单的问题,但我开发了一个应用程序,它始终使用1.5的构建目标而没有问题。但是,现在我正在添加1.6中引入的TextToSpeech。我已经创建了一个封装TextToSpeech代码的TextToSpeech包装器,并且我对活动进行了检查,这样当它运行时,它应该只适用于1.6及更高版本的设备。但诀窍是让代码在Eclipse中运行,构建目标为1.5。当我尝试这样做时,当然,我得到以下错误与我的TextToSpeech包装类相关联:
“无法解析TextToSpeech。”
我已经玩过jar作为jar,创建了一个库项目等,但我似乎无法让它们工作。对于库项目,它表示依赖项目必须具有相同或更高的API级别,因此它不起作用。一些相关的代码摘录:
的AndroidManifest.xml
<uses-sdk
android:minSdkVersion="3"
android:targetSdkVersion="8"
/>
活动类
static {
try {
TextToSpeechWrapper.checkAvailable();
androidTextToSpeechAvailable = true;
} catch (Throwable t) {
androidTextToSpeechAvailable = false;
}
}
包装类
import java.util.HashMap;
import java.util.Locale;
import android.content.Context;
import android.speech.tts.TextToSpeech;
/*
* A wrapper class for the newer Android text-to-speech library that is only found in
* Android OS 1.6 and above (Donut and above). This is useful so that the app can
* be loaded on pre-Donut devices without breaking the app.
*/
public class TextToSpeechWrapper {
private TextToSpeech mTextToSpeech;
// class initialization fails when this throws an exception
static {
try {
Class.forName("android.speech.tts.TextToSpeech");
} catch (Exception e) {
throw new RuntimeException(e);
}
}
// Some static vars from the text-to-speech class
public static int SUCCESS = TextToSpeech.SUCCESS;
public static int QUEUE_FLUSH = TextToSpeech.QUEUE_FLUSH; <--- Eclipse errors point here cause it does not exist in 1.5.
所以我的问题是如何让项目再次使用1.5的构建目标和模拟器,这样我就可以测试并确信我的应用程序仍适用于1.5及以上版本?
答案 0 :(得分:0)
但诀窍是让代码在Eclipse中运行,构建目标为1.5。
这是不可能的。您需要至少构建您正在调用的最低API级别。
所以我的问题是如何让项目再次使用1.5的构建目标和模拟器,这样我就可以测试并确信我的应用程序仍适用于1.5及以上版本?
你没有。您使用1.6或更高版本的构建目标,然后在Android 1.5设备/模拟器上测试应用程序。
答案 1 :(得分:0)
马克说的话。使用4(Android 1.6)的构建目标而不是8,minSdk为3(Android 1.5)。你仍然需要进行那种检查,以便你优雅地处理没有TTS的1.5设备。你不能简单地在1.5中包含一个jar文件,因为TTS需要你尝试的jar文件中没有的许多其他组件。
答案 2 :(得分:0)
如果您的目的是在1.5设备/ AVD上测试您的应用,您可以尝试针对Android 1.6(API级别4)构建它,并在清单中设置minSdkVersion = 3。我不确定,但我认为你应该能够以这种方式在Android 1.5(API 3级)设备上运行它。如果这不起作用,我有另一个解决方案,但它有点复杂,所以如果你需要它,请告诉我,我会向你解释。