我是Android的新手,但想制作一个简单的Android应用程序,显示我在面包板上的LED状态。到目前为止,我已经使用ESP8266创建了一个服务器,上面写着" LED ON" (使用this指南)现在我想在textview或其他东西上显示我的应用上的字符串。
我见过的每一个有用的在线资源都使用Android Studio中过时的apache HTTPClient方法,但我需要在API 23上使用URLConnect。以下是我到目前为止的内容。当我尝试单步执行代码时,异常处理程序在执行以" BufferedReader"开头的行时被调用,所以我知道那里发生了一些事情。
注意:我已将以下内容添加到Android Manifest中:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
任何人都知道发生了什么,或者可以修复我的代码?谢谢你的帮助!作为Android编程的初学者,我真的很感激!下面是我的.java文件中的代码。
public void run ()
{
esp_message = (EditText)findViewById(R.id.esp_msg_txb);
btn_connect = (Button)findViewById(R.id.button);
btn_connect.setOnClickListener(
new View.OnClickListener() {
@Override
public void onClick(View v) {
new Thread(new Runnable() {
public void run() {
try {
URL url = new URL("http://thing.local/led/1");
URLConnection yc = url.openConnection();
BufferedReader in = new BufferedReader(
new InputStreamReader(
yc.getInputStream()));
String inputLine;
StringBuilder builder = new StringBuilder();
while ((inputLine = in.readLine()) != null)
builder.append(inputLine.trim());
in.close();
String message = builder.toString();
esp_message.setText(message);
}
catch (Exception ex) {
Log.e("Fail 1", ex.toString());
//Toast.makeText(getApplicationContext(),"Invalid IP Address", Toast.LENGTH_LONG).show();
Log.i("Error on load data:", "" + ex.getMessage());
}
}
}).start();
}
}
);
}