我有一个使用 TTS 的 android 活动,但是当我退出它时,Logcat 中出现泄漏的服务连接错误。在泄漏的服务错误上方,我得到一个声明:
stop failed: not bound to TTS engine
shutdown failed: not bound to TTS engine
Run Code Online (Sandbox Code Playgroud)
我的 onStop 和 onDestroy 看起来像这样: 编辑代码:
@Override
public void onStop() {
if (tts != null) {
tts.stop();
}
super.onStop();
}
@Override
public void onDestroy() {
if (tts != null) {
tts.shutdown();
}
super.onDestroy();
}
Run Code Online (Sandbox Code Playgroud)
我在用户按下按钮时触发 TTS(TTS 工作正常,我只是想修复服务连接错误)
if (v == speakButton && ttscrashprotect == 1) {
String text = inputText.getText().toString();
if (text != null && text.length() > 0) {
tts.speak(text, …Run Code Online (Sandbox Code Playgroud) 我在我的应用程序中输出了几个临时文件到tmp目录,但是想知道我是否最好在关闭时删除它们,还是我希望主机操作系统为我处理这个?
我是Java的新手,我可以处理删除,但希望尽可能保持应用程序的多操作系统和Linux友好.如果我不需要这样做,我已尽量减少文件删除.
这是我用来输出tmp文件的方法:
try {
java.io.InputStream iss = getClass().getResourceAsStream("/nullpdf.pdf");
byte[] data = IOUtils.toByteArray(iss);
iss.read(data);
iss.close();
String tempFile = "file";
File temp = File.createTempFile(tempFile, ".pdf");
FileOutputStream fos = new FileOutputStream(temp);
fos.write(data);
fos.flush();
fos.close();
nopathbrain = temp.getAbsolutePath();
System.out.println(tempFile);
System.out.println(nopathbrain);
} catch (IOException ex) {
ex.printStackTrace();
System.out.println("TEMP FILE NOT CREATED - ERROR ");
}
Run Code Online (Sandbox Code Playgroud) 我想得到我在我的活动上运行的4个微调器中所选位置的int值.一旦我有了Int值,我想根据这个值循环并写出一个文件到SDCARD,选择IE spinner1项目4,在SD卡上生成文本文件1,2,3,4.
我不确定如何获取用户在每个微调器中单击的位置的int值,但是我想在选择图像按钮时"收集"这些值,目前这是我的代码;
//used to track spinner value
public int spinner1 = 0;
public int spinner2 = 0;
public int spinner3 = 0;
public int spinner4 = 0;
etnumber1 = (Spinner) findViewById(R.id.etnumber1);
etnumber2 = (Spinner) findViewById(R.id.etnumber2);
etnumber3 = (Spinner) findViewById(R.id.etnumber3);
etnumber4 = (Spinner) findViewById(R.id.etnumber4);
etnumber1.setOnItemSelectedListener(this);
etnumber2.setOnItemSelectedListener(this);
etnumber3.setOnItemSelectedListener(this);
etnumber4.setOnItemSelectedListener(this);
}//end of oncreate
public void onClick(View v) {
if (v==imagerun) {
for (int i=1; i<spinner1; i++){
//primary callsign
Toast.makeText(getBaseContext(), String.valueOf(i),
Toast.LENGTH_SHORT).show();
String fileName = String.valueOf(i) +".txt";
File myFile = new File("/sdcard/.working/" +fileName); …Run Code Online (Sandbox Code Playgroud) 当我通过USB连接时,我正在使用ADB将文件从我的java应用程序推送到平板电脑.我希望能够通过ADB检测设备是否通过USB连接.我用来推送文件的代码是:
public void wiredsync(){
try {
abdsourcesync = buildpath;
adbtabletsync = "/mnt/sdcard/test";
System.out.println("Starting Sync via adb with command " + "adb" + " push "+ buildpath + " " + adbtabletsync);
Process process = Runtime.getRuntime().exec("adb" + " push "+ buildpath + " " + adbtabletsync);
InputStreamReader reader = new InputStreamReader(process.getInputStream());
Scanner scanner = new Scanner(reader);
scanner.close();
} catch(IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}//end wiredsync
Run Code Online (Sandbox Code Playgroud)
如果平板电脑已连接,我该如何修改此代码?
谢谢您的帮助.
安迪
我正在尝试使用argc和argv从命令行验证用户输入,但我遇到了分段错误,我不知道为什么.
我想验证用户是否已输入正int(因此argc = 2且argv为正).
这是我的代码:
int main (int argc, string argv[])
{
int k = atoi(argv[1]);
if (argc != 2 && k <1)
{
return 1;
}
}
Run Code Online (Sandbox Code Playgroud)
我的代码中的k <1部分似乎工作正常,但每次尝试运行时都会出现分段错误而没有程序名和参数(agrc!= 2).
编辑:
更清楚地描述错误处理问题:
如果我运行./myprogram -2然后我按预期得到我的返回1.
如果我运行./myprogram hjdksfhdsk然后按预期得到我的返回1.
如果我运行./myprogram,那么我会遇到分段错误.
正是这种行为让我觉得我对argc值的处理是错误的,但我不知道为什么我不能只测试argc!= 2.