java - Android 应用程序停止工作

标签 java android

我目前正在开发一个 Android 应用程序,它可以通过网络向 AV 接收器发送命令。我已经制作了一个按钮并对其进行了编码,这样当单击该按钮时,它会将命令 PWON\r 发送到指定的 IP 和端口。我还在 list 文件中授予了完全的互联网权限。问题是,一旦按下按钮,应用程序就会停止工作。我不确定问题是什么。

代码:

package av.control.test;  
import java.io.IOException;  
import java.io.OutputStream;  
import java.net.Socket;  
import java.net.UnknownHostException;  
import android.app.Activity;  
import android.os.Bundle;
import android.view.View;  
import android.widget.Button;

public class AVControlActivity extends Activity {

Button mbutt;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    mbutt = (Button)findViewById(R.id.Button);
}
public void onClick(View view) throws UnknownHostException, IOException
{
    new Thread() {
        public void run() {
            Socket socket = null;
            try {
                socket = new Socket("192.168.1.74", 23);
            } catch (UnknownHostException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            } catch (IOException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }
            try{
                dataOutputStream.Object BUFFER = null;
                write(BUFFER);
                String buffer="PWON\r";
                OutputStream os=socket.getOutputStream();
                os.write(buffer.getBytes()); 
            } catch(IOException e)
            {
                //error code
            }
          }
        }.start();
}
private void write(Object BUFFER) {
    // TODO Auto-generated method stub

}
}

这里还有 main.xml(如果有任何用处的话):

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

<TextView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/hello" />

<Button
    android:id="@+id/Button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Power On"
    android:onClick="onClick" />

</LinearLayout>

如果您提供任何帮助,我将不胜感激。

编辑:

日志猫

09-15 14:31:30.742: I/dalvikvm(1209): threadid=3: reacting to signal 3
09-15 14:31:31.301: E/dalvikvm(1209): Unable to open stack trace file    '/data/anr/traces.txt': Permission denied
09-15 14:31:31.322: I/dalvikvm(1209): threadid=3: reacting to signal 3
09-15 14:31:31.421: I/dalvikvm(1209): Wrote stack traces to '/data/anr/traces.txt'
09-15 14:31:31.801: I/dalvikvm(1209): threadid=3: reacting to signal 3
09-15 14:31:31.901: I/dalvikvm(1209): Wrote stack traces to '/data/anr/traces.txt'
09-15 14:31:32.381: I/dalvikvm(1209): threadid=3: reacting to signal 3
09-15 14:31:32.451: I/dalvikvm(1209): Wrote stack traces to '/data/anr/traces.txt'
09-15 14:31:32.711: D/gralloc_goldfish(1209): Emulator without GPU emulation detected.
09-15 14:31:32.843: I/dalvikvm(1209): threadid=3: reacting to signal 3
09-15 14:31:32.901: I/dalvikvm(1209): Wrote stack traces to '/data/anr/traces.txt'
09-15 14:34:53.081: W/System.err(1209): java.net.ConnectException: failed to connect to     /192.168.1.74 (port 23): connect failed: ETIMEDOUT (Connection timed out)
09-15 14:34:53.091: W/System.err(1209):     at   libcore.io.IoBridge.connect(IoBridge.java:114)
09-15 14:34:53.091: W/System.err(1209):     at     java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192)
09-15 14:34:53.101: W/System.err(1209):     at  java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
09-15 14:34:53.121: W/System.err(1209):     at  java.net.Socket.startupSocket(Socket.java:566)
09-15 14:34:53.121: W/System.err(1209):     at java.net.Socket.tryAllAddresses(Socket.java:127)
09-15 14:34:53.132: W/System.err(1209):     at java.net.Socket.<init>(Socket.java:177)
09-15 14:34:53.132: W/System.err(1209):     at java.net.Socket.<init>(Socket.java:149)
09-15 14:34:53.161: W/System.err(1209):     at   av.control.test.AVControlActivity$1.run(AVControlActivity.java:27)
09-15 14:34:53.161: W/System.err(1209): Caused by: libcore.io.ErrnoException: connect failed: ETIMEDOUT (Connection timed out)
09-15 14:34:53.182: W/System.err(1209):     at libcore.io.Posix.connect(Native Method)
09-15 14:34:53.182: W/System.err(1209):     at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:85)
09-15 14:34:53.191: W/System.err(1209):     at  libcore.io.IoBridge.connectErrno(IoBridge.java:127)
09-15 14:34:53.211: W/System.err(1209):     at libcore.io.IoBridge.connect(IoBridge.java:112)
09-15 14:34:53.211: W/System.err(1209):     ... 7 more
09-15 14:34:53.222: W/dalvikvm(1209): threadid=12: thread exiting with uncaught  exception (group=0x409c01f8)
09-15 14:34:53.241: E/AndroidRuntime(1209): FATAL EXCEPTION: Thread-121
09-15 14:34:53.241: E/AndroidRuntime(1209): java.lang.NullPointerException
09-15 14:34:53.241: E/AndroidRuntime(1209):     at   av.control.test.AVControlActivity$1.run(AVControlActivity.java:39)

最佳答案

您有一个空指针异常

OutputStream os=socket.getOutputStream();

这是因为下面的行由于超时而出现异常。

socket = new Socket("192.168.1.74", 23);

所以套接字仍然为空。如果未创建套接字,我认为您不应该继续操作。因此,请像下面这样更改您的代码。

 try {
            socket = new Socket("192.168.1.74", 23);
            dataOutputStream.Object BUFFER = null;
            write(BUFFER);
            String buffer="PWON\r";
            OutputStream os=socket.getOutputStream();
            os.write(buffer.getBytes()); 
        } catch (UnknownHostException e1) {
            e1.printStackTrace();
        } catch (IOException e1) {
            e1.printStackTrace();
        }

请进一步检查超时的原因。可能是由于设备不在同一网络上,或端口未打开

关于java - Android 应用程序停止工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12438135/

相关文章:

android - 优化重 fragment 着色器的性能

java - 如何在 Spring Boot 应用程序中模拟外部依赖关系?

java - 按单词出现的降序显示

java - 使用本地模拟器测试 PubsubIO 读取

android - 在 Android 10 中使用存储访问框架输出 URI 文件比 DocumentFile 更好的方法是什么?

android - 如果我可以使用 android :configChanges ="keyboard|orientation|screenLayout",为什么还需要 setRetainInstance 或 onSaveInstance

java - 默认值在 hibernate 中不起作用

java - 在spring mvc中按名称获取cookie值

android - 如何在 android 中创建 7incs avd 模拟器?

android - 如何启动相机 Intent 并保存非压缩图片