为了在手机上实现对家庭的监控,首先需要将本地数据传到云端服务器,然后再在手机设备上获取信息。上一节已经完成了前半部分的内容,今天主要完成android上的开发。
先贴代码:
Activity
public class GetImageActivity extends AppCompatActivity {
private ImageView iv_dragonborad;
private Button bt_get;
private Button bt_show;
private Bitmap bmp;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_get_image);
iv_dragonborad = (ImageView)findViewById(R.id.iv_dragonboard);
bt_get = (Button)findViewById(R.id.bt_get);
bt_show = (Button)findViewById(R.id.bt_show);
bt_get.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Thread t = new Thread(new Runnable(){
public void run(){
URL url = null;
try {
url = new URL("http://api.yeelink.net/v1.0/device/344726/sensor/383332/photo/content");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
// 设置连接超时为5秒
conn.setConnectTimeout(5000);
// 设置请求类型为Get类型
conn.setRequestMethod("GET");
// 判断请求Url是否成功
if (conn.getResponseCode() != 200) {
throw new RuntimeException("请求url失败");
}
InputStream inStream = conn.getInputStream();
byte[] bt = MyUtils.read(inStream);
inStream.close();
bmp = BitmapFactory.decodeByteArray(bt,0,bt.length);
Log.d("http","okkk");
//Toast.makeText(getApplicationContext(),"获取图片成功",Toast.LENGTH_SHORT).show();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (ProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
});
t.start();
}
});
bt_show.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
iv_dragonborad.setImageBitmap(bmp);
}
});
}
}
布局文件:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.wenjiehe.android_study.dragonboard.GetImageActivity">
<Button
android:id="@+id/bt_get"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="获取监控图片" />
<Button
android:id="@+id/bt_show"
android:layout_toRightOf="@id/bt_get"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="显示图片" />
<ImageView
android:id="@+id/iv_dragonboard"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignLeft="@id/bt_get"
android:layout_below="@id/bt_get" />
</RelativeLayout>
图片获取的方法主要是Yeelink官方给我们提供的两个方法,链接:http://www.yeelink.net/developer/apidoc/12
效果如图:
至此,远程监控部分结束!