我无法从Android向Java桌面服务器获取价值。我只得到一个输出。我已经使循环运行了5次。它运行一次并在android上输出一次,然后崩溃。它应该给android 5次输出。在每个输出之后,它应该将价值传递给java桌面服务器。错误:空指针异常
我在做什么和我想要的是什么:我正在获得信号强度。我想要5个样本。所以我运行代码5次。只要我一次获得值,我就可以将它传递给Java Desktop Server代码。我已经写在java中作为server.java,它运行得很好。
客户端代码:
public class MainActivity extends Activity {
protected static final long TIME_DELAY = 1000;
TextView mTextView;
private WifiManager wifiManager;
Handler handler=new Handler();
int count =0; String data ="";
private String messsage;
private static final IntentFilter FILTER = new IntentFilter(
WifiManager.SCAN_RESULTS_AVAILABLE_ACTION);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mTextView = (TextView) findViewById(R.id.text_id);
wifiManager = (WifiManager) getSystemService(WIFI_SERVICE);
wifiManager.startScan();
}
@Override
public void onStart() {
super.onStart();
// Register the scan receiver
registerReceiver(scanReceiver, FILTER);
}
@Override
public void onStop() {
super.onStop();
// Unregister the receiver
unregisterReceiver(scanReceiver);
}
public void onClickRefresh(View v) {
count=0;
wifiManager.startScan();
//Log.d(TAG, "onClickRefresh");
}
BroadcastReceiver scanReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// Log.d(TAG, "scanReceiver received!");
// Refreshes the chart once we have scan results
// Request a scan again
if(count<5){
final StringBuilder sb = new StringBuilder();
List<ScanResult> wifiScanList = wifiManager.getScanResults();
for (ScanResult result : wifiScanList) {
if (result.SSID.equals("Khosla ka Ghosla")) {
sb.append(""+result.level);
}
if (result.SSID.equals("panny")) {
sb.append(""+result.level);
}
if (result.SSID.equals("ferbora")) {
sb.append(""+result.level);
}
// mTextView.setText("getting called " +count + sb);
messsage=sb.toString();
mTextView.setText(messsage);
} count++;
new Asynctask1().execute(messsage);
wifiManager.startScan();
}
}
};
public class Asynctask1 extends AsyncTask<String, Void, Void> {
private PrintWriter printwriter;
private static final String IP_ADDRESS = "192.168.0.8";
private static final int DEST_PORT = 4444;
private EditText mTextField;
protected Void doInBackground(String... messages) {
String message = messages[0];
Socket client = null;
try {
client = new Socket(IP_ADDRESS, DEST_PORT); // connect to server
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
// Write to server.
try {
printwriter = new PrintWriter(client.getOutputStream(), true);
printwriter.write(messsage); // write the message to output stream
printwriter.flush();
printwriter.close();
}
catch (IOException e) {
e.printStackTrace();
} finally {
try {
client.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return null;
}
}
}
我得到的错误是空指针异常。我不知道为什么它是空的。它给出了错误:finally {try {client.close();.
除此之外,日志猫不会显示太多东西。你能指导我吗?
@NiksTyagi是的,我可以连接服务器。如果我只写Asynctask,那么我可以打印到服务器。但是,当我运行代码5次并且保持循环时不行。所以服务器很好。不知道,为什么这个错误即将到来。 –