基于之前的基础了解如何获得接口参数,这篇文章将会基于这样的基础将智能农业项目进一步完善,尚在学习,有问题的我将新一步讨论改善。
1、添加依赖
dependencies {
compile 'com.loopj.android:android-async-http:1.4.9'
compile 'com.google.code.gson:gson:2.8.2'
implementation 'com.squareup.okhttp3:okhttp:3.10.0'
}
2、创建第一个视图,跳出自定义对话框
创建自定义对话框布局
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:orientation="vertical"
android:layout_height="wrap_content">
<TextView
android:layout_width="match_parent"
android:layout_height="50dp"
android:textSize="20dp"
android:text="欢迎您,请先设置服务器IP"
android:gravity="center"/>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="#716c6c"/>
<EditText
android:id="@+id/dialog_et"
android:layout_width="match_parent"
android:hint="请输入设备上显示的IP地址"
android:padding="15dp"
android:layout_height="50dp" />
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="#716c6c"/>
<Button
android:id="@+id/dialog_btn"
android:layout_width="match_parent"
android:layout_margin="15dp"
android:text="确定"
android:textSize="20sp"
android:gravity="center"
android:layout_gravity="center"
android:layout_height="50dp" />
LinearLayout>
ImgActivity定义自定义对话框,并将输入的IP地址传入第一个fragment页面,判定连接哪一个接口,换句话说就是想连哪一个机器就连哪个机器
public class ImgActivity extends AppCompatActivity {
private final long SPLASH_LENGTH = 3000;
Handler handler = new Handler();
private Button button;
private String IP;
private EditText editText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_img);
handler.postDelayed(new Runnable() { //使用handler的postDelayed实现延时跳转
public void run() {
AlertDialog.Builder builder = new AlertDialog.Builder(ImgActivity.this);
View view = View.inflate(ImgActivity.this,R.layout.alert_dialog,null);
builder.setView(view);
builder.setCancelable(true);
editText = view.findViewById(R.id.dialog_et);
button = view.findViewById(R.id.dialog_btn);
AlertDialog dialog = builder.create();
dialog.show();
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(ImgActivity.this, MainActivity.class);
IP = editText.getText().toString();
intent.putExtra("IP",IP);
startActivity(intent);
finish();
}
});
}
}, SPLASH_LENGTH);//3秒后跳转至应用主界面MainActivity
}
}
3、创建Mainactivity及视图文件,以及这个框架内的三个fragment可滑动页面
Mainactivity:
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
//创建fragmentList集合,并进行实例化
List fragmentList = new ArrayList<>();
private ViewPager agricultureVp;
private LinearLayout homeLin;
private LinearLayout setLin;
private LinearLayout helpLin;
private static final String TAG = "MainActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bangID();
HomePageFragment homePageFragment = new HomePageFragment();
SetFragment setFragment = new SetFragment();
HelpFragment helpFragment = new HelpFragment();
fragmentList.add(homePageFragment);
fragmentList.add(setFragment);
fragmentList.add(helpFragment);
MyPageAdapter adapter = new MyPageAdapter(getSupportFragmentManager(), fragmentList);
agricultureVp.setAdapter(adapter);
}
private void bangID() {
agricultureVp = findViewById(R.id.main_vp);
homeLin = findViewById(R.id.home_page_lin);
setLin = findViewById(R.id.set_lin);
helpLin = findViewById(R.id.help_lin);
homeLin.setOnClickListener(this);
setLin.setOnClickListener(this);
helpLin.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.home_page_lin:
agricultureVp.setCurrentItem(0);
break;
case R.id.set_lin:
agricultureVp.setCurrentItem(1);
break;
case R.id.help_lin:
agricultureVp.setCurrentItem(2);
break;
default:
}
}
}
activity_main:
<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"
tools:context="android.coolweather2.com.agriculturedemo.MainActivity">
<android.support.v4.view.ViewPager
android:id="@+id/main_vp"
android:layout_width="match_parent"
android:layout_above="@+id/main_bottom_lin"
android:layout_height="match_parent">android.support.v4.view.ViewPager>
<LinearLayout
android:id="@+id/main_bottom_lin"
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_alignParentBottom="true"
android:orientation="horizontal">
<LinearLayout
android:id="@+id/home_page_lin"
android:layout_width="0dp"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center_horizontal"
android:layout_weight="1">
<ImageView
android:layout_width="60dp"
android:layout_height="0dp"
android:layout_weight="1"
android:src="@mipmap/b1"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="15dp"
android:text="首页"/>
LinearLayout>
<LinearLayout
android:id="@+id/set_lin"
android:layout_width="0dp"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center_horizontal"
android:layout_weight="1">
<ImageView
android:layout_width="60dp"
android:layout_height="0dp"
android:layout_weight="1"
android:src="@mipmap/b2"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="15dp"
android:text="设置"/>
LinearLayout>
<LinearLayout
android:id="@+id/help_lin"
android:layout_width="0dp"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center_horizontal"
android:layout_weight="1">
<ImageView
android:layout_width="60dp"
android:layout_height="0dp"
android:layout_weight="1"
android:src="@mipmap/b3"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="15dp"
android:text="帮助"/>
LinearLayout>
LinearLayout>
RelativeLayout>
3.1 创建适配器MyPageAdapter
public class MyPageAdapter extends FragmentPagerAdapter {
//创建fragmentList集合
private List fragmentList;
//构造方法实现传值
public MyPageAdapter(FragmentManager fm, List fragmentList) {
super(fm);
this.fragmentList = fragmentList;
}
//返回fragmentList对象
@Override
public Fragment getItem(int position) {
return fragmentList.get(position);
}
//返回fragmentList对象个数
@Override
public int getCount() {
return fragmentList.size();
}
}
3.2
绑定图片适配器
HomePageFragment
public class HomePageFragment extends Fragment implements View.OnClickListener {
List fragmentImgList = new ArrayList<>();
private ImageView co2Img;
private ImageView lightImg;
private ImageView soilImg;
private ImageView airImg;
private ViewPager ImgVp;
private static final String TAG = "HomePageFragment";
public static int airHumidity;
public static int PM25;
public static int airTemperature;
public static int soilTemperature;
public static int co2;
public static int soilHumidity;
public static int light;
private TextView co2Tv;
private TextView lightTv;
private TextView soilTempTv;
private TextView soilWetnessTv;
private TextView airTempTv;
private TextView airWetnessTv;
private String basicUrl;
private ProgressDialog progressDialog;
private int flag = 0;
public HomePageFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_home_page, container, false);
bangID(view);
ImgAFragment imgAFragment = new ImgAFragment();
ImgBFragment imgBFragment = new ImgBFragment();
fragmentImgList.add(imgAFragment);
fragmentImgList.add(imgBFragment);
MyImgPageAdapter adapter1 = new MyImgPageAdapter(getChildFragmentManager(), fragmentImgList);
ImgVp.setAdapter(adapter1);
Intent intent = getActivity().getIntent();
String relativeUrl = intent.getStringExtra("IP");
basicUrl = "http://"+relativeUrl+":8890/type/jason/action/";
showProgressDialog();
getStatus();
getAppValues();
return view;
}
private void getStatus() {
Intent intent1 = getActivity().getIntent();
String relativeUrl = intent1.getStringExtra("IP");
String basicUrl1 = "http://"+relativeUrl+":8890/type/jason/action/"+ "getContorllerStatus";
Okhttp.sendOkHttpRequest(basicUrl1, new Callback() {
@Override
public void onFailure(Call call, IOException e) {
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
closeProgressDialog();
Toast.makeText(getActivity(), "失败", Toast.LENGTH_SHORT).show();
}
});
}
@Override
public void onResponse(Call call, final Response response) throws IOException {
flag++;
String responseString = null;
try {
responseString = response.body().string();
} catch (IOException e) {
e.printStackTrace();
}
Log.e(TAG, "onSuccess: "+responseString );
Gson gson = new Gson();
AppStatus appStatus = gson.fromJson(responseString,AppStatus.class);
Status.WaterPump = appStatus.getWaterPump();
Status.Blower = appStatus.getBlower();
Status.Roadlamp = appStatus.getRoadlamp();
Status.Buzzer = appStatus.getBuzzer();
Status.resultStr = appStatus.getResult();
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
if(flag==2){
closeProgressDialog();
}
closeProgressDialog();
Toast.makeText(getActivity(), "成功", Toast.LENGTH_SHORT).show();
}
});
}
});
}
private void getAppValues() {
Intent intent = getActivity().getIntent();
String relativeUrl = intent.getStringExtra("IP");
String basicUrl2 = "http://"+relativeUrl+":8890/type/jason/action/getSensor?username=admin";
Log.e(TAG, "getAppValues: "+basicUrl2 );
Okhttp.sendOkHttpRequest(basicUrl2, new Callback() {
@Override
public void onFailure(Call call, IOException e) {
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
closeProgressDialog();
Toast.makeText(getActivity(), "network failture", Toast.LENGTH_SHORT).show();
}
});
}
@Override
public void onResponse(Call call, final Response response) throws IOException {
flag++;
String responseString = null;
try {
responseString = response.body().string();
} catch (IOException e) {
e.printStackTrace();
}
Log.e(TAG, "onResponse: getval"+ responseString);
Gson gson = new Gson();
App app = gson.fromJson(responseString,App.class);
airHumidity = app.getAirHumidity();
PM25 = app.getPM25();
airTemperature = app.getAirTemperature();
soilTemperature = app.getSoilTemperature();
co2 = app.getCo2();
soilHumidity = app.getSoilHumidity();
light = app.getLight();
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
if(flag==2){
closeProgressDialog();
}
co2Tv.setText(co2+"");
lightTv.setText(light+"");
soilTempTv.setText(soilTemperature+"");
soilWetnessTv.setText(soilHumidity+"");
airTempTv.setText(airTemperature+"");
airWetnessTv.setText(airHumidity+"");
//Log.e(TAG, "onSuccess: "+responseString );
Toast.makeText(getActivity(), "success", Toast.LENGTH_SHORT).show();
}
});
}
});
}
private void bangID(View view) {
co2Img = view.findViewById(R.id.co2_right_img);
ImgVp = view.findViewById(R.id.home_page_vp);
lightImg = view.findViewById(R.id.light_right_img);
soilImg = view.findViewById(R.id.soil_right_img);
airImg = view.findViewById(R.id.air_right_img);
co2Tv = view.findViewById(R.id.co2_values_tv);
lightTv = view.findViewById(R.id.light_values_tv);
soilTempTv = view.findViewById(R.id.soil_temp_values_tv);
soilWetnessTv = view.findViewById(R.id.soil_wetness_values_tv);
airTempTv = view.findViewById(R.id.air_temp_values_tv);
airWetnessTv = view.findViewById(R.id.air_wetness_values_tv);
co2Img.setOnClickListener(this);
lightImg.setOnClickListener(this);
soilImg.setOnClickListener(this);
airImg.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.co2_right_img:
Intent intent = new Intent(getActivity(), CO2Activity.class);
intent.putExtra("basicUrl",basicUrl);
startActivity(intent);
break;
case R.id.light_right_img:
Intent intent1 = new Intent(getActivity(), SunActivity.class);
intent1.putExtra("basicUrl",basicUrl);
startActivity(intent1);
break;
case R.id.soil_right_img:
Intent intent2 = new Intent(getActivity(), TuActivity.class);
intent2.putExtra("basicUrl",basicUrl);
startActivity(intent2);
break;
case R.id.air_right_img:
Intent intent3 = new Intent(getActivity(), AirActivity.class);
intent3.putExtra("basicUrl",basicUrl);
startActivity(intent3);
break;
default:
}
}
private void showProgressDialog(){
if (progressDialog==null){
progressDialog = new ProgressDialog(getActivity());
progressDialog.setMessage("loading....");
progressDialog.setCanceledOnTouchOutside(false);
}
progressDialog.show();
}
private void closeProgressDialog(){
if(progressDialog!=null){
progressDialog.dismiss();
}
}
@Override
public void onResume() {
super.onResume();
closeProgressDialog();
}
}
3.3 创建App实体类作为getAppValues接收数据工具类
public class App {
private int airHumidity;
private int PM25;
private int airTemperature;
private int soilTemperature;
private int co2;
private int soilHumidity;
private int light;
public int getAirHumidity() {
return airHumidity;
}
public void setAirHumidity(int airHumidity) {
this.airHumidity = airHumidity;
}
public int getPM25() {
return PM25;
}
public void setPM25(int PM25) {
this.PM25 = PM25;
}
public int getAirTemperature() {
return airTemperature;
}
public void setAirTemperature(int airTemperature) {
this.airTemperature = airTemperature;
}
public int getSoilTemperature() {
return soilTemperature;
}
public void setSoilTemperature(int soilTemperature) {
this.soilTemperature = soilTemperature;
}
public int getCo2() {
return co2;
}
public void setCo2(int co2) {
this.co2 = co2;
}
public int getSoilHumidity() {
return soilHumidity;
}
public void setSoilHumidity(int soilHumidity) {
this.soilHumidity = soilHumidity;
}
public int getLight() {
return light;
}
public void setLight(int light) {
this.light = light;
}
}
3.4 创建AppStatus实体类作为getStatus获取仪器状态工具类
public class AppStatus {
private int WaterPump;
private int Blower;
private int Roadlamp;
private int Buzzer;
private String result;
public int getWaterPump() {
return WaterPump;
}
public void setWaterPump(int waterPump) {
WaterPump = waterPump;
}
public int getBlower() {
return Blower;
}
public void setBlower(int blower) {
Blower = blower;
}
public int getRoadlamp() {
return Roadlamp;
}
public void setRoadlamp(int roadlamp) {
Roadlamp = roadlamp;
}
public int getBuzzer() {
return Buzzer;
}
public void setBuzzer(int buzzer) {
Buzzer = buzzer;
}
public String getResult() {
return result;
}
public void setResult(String result) {
this.result = result;
}
}
3.5 创建OKHttp实体类方法
public class Okhttp {
private static OkHttpClient client = new OkHttpClient();
public static void sendOkHttpRequest(String address,okhttp3.Callback callback){
Request request = new Request.Builder().url(address).build();
client.newCall(request).enqueue(callback);
}
public static void postJsonByOkHttp(String url, JSONObject jsonObject,okhttp3.Callback callback){
MediaType mediaType = MediaType.parse("application/json;Charset=UTF-8");
RequestBody requestBody = RequestBody.create(mediaType,jsonObject.toString());
Request request = new Request.Builder().url(url).post(requestBody).build();
client.newCall(request).enqueue(callback);
}
}
3.6 最上方图片滑动切换,运用fragment和adapter
创建图片适配器MyImgPageAdapter:
public class MyImgPageAdapter extends FragmentPagerAdapter {
//创建fragmentList集合
private List fragmentImgList;
//构造方法实现传值
public MyImgPageAdapter(FragmentManager fm, List fragmentImgList) {
super(fm);
this.fragmentImgList = fragmentImgList;
}
//返回fragmentList对象
@Override
public Fragment getItem(int position) {
return fragmentImgList.get(position);
}
//返回fragmentList对象个数
@Override
public int getCount() {
return fragmentImgList.size();
}
}
3.7创建一个HttpUtil实体类,连接接口文件
public class HttpUtil {
// private static final String basicUrl = "http://192.168.1.100:8890/type/jason/action/";
private static AsyncHttpClient client = new AsyncHttpClient();
public static void get (String url, RequestParams params, AsyncHttpResponseHandler responseHandler){
client.get(url,params,responseHandler);
}
public static void post(Context context, String url, HttpEntity entity, String contentType, AsyncHttpResponseHandler responseHandler) {
client.post(context,url,entity,contentType,responseHandler);
}
4、
<LinearLayout 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:orientation="vertical"
tools:context="android.coolweather2.com.agriculturedemo.fragment.SetFragment">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="50dp">
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:text="设置"
android:textColor="#23a949"
android:textSize="30sp" />
LinearLayout>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="#716c6c"/>
<LinearLayout
android:layout_width="match_parent"
android:orientation="horizontal"
android:layout_height="50dp">
<ImageView
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_gravity="center"
android:src="@mipmap/zidongkongzhi" />
<TextView
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="match_parent"
android:text="自动控制"
android:layout_marginLeft="15dp"
android:textSize="25sp"
android:gravity="center_vertical"/>
<ImageView
android:layout_width="20dp"
android:layout_height="40dp"
android:src="@mipmap/gengduo"
android:layout_marginRight="15dp"
android:layout_gravity="right|center_vertical" />
LinearLayout>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="#716c6c"/>
<LinearLayout
android:layout_width="match_parent"
android:orientation="horizontal"
android:layout_height="50dp">
<ImageView
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_gravity="center"
android:src="@mipmap/qinchuhuancun" />
<TextView
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="match_parent"
android:text="清除缓存"
android:layout_marginLeft="15dp"
android:textSize="25sp"
android:gravity="center_vertical"/>
<TextView
android:layout_width="80dp"
android:layout_height="40dp"
android:text="660M"
android:textSize="20sp"
android:paddingRight="5dp"
android:gravity="center"/>
LinearLayout>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="#716c6c"/>
<LinearLayout
android:layout_width="match_parent"
android:orientation="horizontal"
android:layout_height="50dp">
<ImageView
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_gravity="center"
android:src="@mipmap/banbengengx" />
<TextView
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="match_parent"
android:text="版本更新"
android:layout_marginLeft="15dp"
android:textSize="25sp"
android:gravity="center_vertical"/>
<TextView
android:layout_width="80dp"
android:layout_height="40dp"
android:text="V2.0"
android:textSize="20sp"
android:paddingRight="5dp"
android:gravity="center"/>
LinearLayout>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="#716c6c"/>
<LinearLayout
android:layout_width="match_parent"
android:orientation="horizontal"
android:layout_height="50dp">
<ImageView
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_gravity="center"
android:src="@mipmap/guanyuwomen" />
<TextView
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="match_parent"
android:text="关于我们"
android:layout_marginLeft="15dp"
android:textSize="25sp"
android:gravity="center_vertical"/>
<ImageView
android:layout_width="20dp"
android:layout_height="40dp"
android:src="@mipmap/gengduo"
android:layout_marginRight="15dp"
android:layout_gravity="right|center_vertical" />
LinearLayout>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="#716c6c"/>
<LinearLayout
android:layout_marginTop="15dp"
android:layout_width="match_parent"
android:orientation="horizontal"
android:layout_height="50dp">
<ImageView
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_gravity="center"
android:src="@mipmap/my_exit" />
<TextView
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="match_parent"
android:text="退出登录"
android:layout_marginLeft="15dp"
android:textSize="25sp"
android:gravity="center_vertical"/>
LinearLayout>
LinearLayout>
<LinearLayout 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:orientation="vertical"
tools:context="android.coolweather2.com.agriculturedemo.fragment.HelpFragment">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="50dp">
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="帮助"
android:textSize="35sp"
android:textColor="#6cd545"
android:gravity="center"/>
LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="50dp">
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="操作指引"
android:textSize="25sp"
android:gravity="center"/>
LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:background="#5fb953"
android:layout_height="50dp">
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="1、第一条操作指引"
android:textSize="25sp"
android:gravity="center"/>
LinearLayout>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="50dp">
<ImageView
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_centerInParent="true"
android:src="@mipmap/xiangxia"/>
RelativeLayout>
<LinearLayout
android:layout_width="match_parent"
android:background="#5fb953"
android:layout_height="50dp">
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="2、第二条操作指引"
android:textSize="25sp"
android:gravity="center"/>
LinearLayout>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="50dp">
<ImageView
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_centerInParent="true"
android:src="@mipmap/xiangxia"/>
RelativeLayout>
<LinearLayout
android:layout_width="match_parent"
android:background="#5fb953"
android:layout_height="50dp">
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="3、第三条操作指引"
android:textSize="25sp"
android:gravity="center"/>
LinearLayout>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="50dp">
<ImageView
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_centerInParent="true"
android:src="@mipmap/xiangxia"/>
RelativeLayout>
<LinearLayout
android:layout_width="match_parent"
android:background="#5fb953"
android:layout_height="50dp">
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="4、第四条操作指引"
android:textSize="25sp"
android:gravity="center"/>
LinearLayout>
LinearLayout>
5、第一个主页面fragment主页面点击事件中传入IP值,且需要控制各个仪器,创建HTTP实体类封装8个开关方法,并创建两个标志位实体类,Status实体类判断点击之前,HTTP内含有实体类判断类点击之后
Status:
public class Status {
public static int WaterPump = 0;
public static int Blower = 0;
public static int Roadlamp = 0;
public static int Buzzer = 0;
public static String resultStr;
public static String TAG = "Status";
}
HTTP:
public class Http {
public static int Result = 0;
public static int alertResult = 0;
public static int lightResult = 0;
public static int pumpResult = 0;
public static void openFan(String basicUrl, final Context context) {
final JSONObject[] jsonObject = {new JSONObject()};
try {
jsonObject[0].put("Blower", 1);
} catch (JSONException e) {
e.printStackTrace();
}
Okhttp.postJsonByOkHttp(basicUrl +"control", jsonObject[0], new okhttp3.Callback() {
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, Response response) throws IOException {
String responseString = response.body().string();
try {
JSONObject jsonObject1 = new JSONObject(responseString);
if (jsonObject1.getString("result").equals("ok")) {
Status.Blower = 1;
Http.Result = 1;
}
} catch (JSONException e) {
e.printStackTrace();
}
}
});
}
public static void closeFan(String basicUrl, Context context) {
final JSONObject[] jsonObject = {new JSONObject()};
try {
jsonObject[0].put("Blower", 0);
} catch (JSONException e) {
e.printStackTrace();
}
Okhttp.postJsonByOkHttp(basicUrl +"control", jsonObject[0], new okhttp3.Callback() {
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, Response response) throws IOException {
String responseString = response.body().string();
try {
JSONObject jsonObject1 = new JSONObject(responseString);
if (jsonObject1.getString("result").equals("ok")) {
Status.Blower = 0;
Http.Result = 0;
}
} catch (JSONException e) {
e.printStackTrace();
}
}
});
}
public static void openAlert(String basicUrl, Context context) {
final JSONObject[] jsonObject = {new JSONObject()};
try {
jsonObject[0].put("Buzzer", 1);
} catch (JSONException e) {
e.printStackTrace();
}
Okhttp.postJsonByOkHttp(basicUrl +"control", jsonObject[0], new okhttp3.Callback() {
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, Response response) throws IOException {
String responseString = response.body().string();
try {
JSONObject jsonObject1 = new JSONObject(responseString);
if (jsonObject1.getString("result").equals("ok")) {
Http.alertResult = 1;
Status.Buzzer = 1;
}
} catch (JSONException e) {
e.printStackTrace();
}
}
});
}
public static void closeAlert(String basicUrl, Context context) {
final JSONObject[] jsonObject = {new JSONObject()};
try {
jsonObject[0].put("Buzzer", 0);
} catch (JSONException e) {
e.printStackTrace();
}
Okhttp.postJsonByOkHttp(basicUrl +"control", jsonObject[0], new okhttp3.Callback() {
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, Response response) throws IOException {
String responseString = response.body().string();
try {
JSONObject jsonObject1 = new JSONObject(responseString);
if (jsonObject1.getString("result").equals("ok")) {
Http.alertResult = 0;
Status.Buzzer = 0;
}
} catch (JSONException e) {
e.printStackTrace();
}
}
});
}
public static void openLight(String basicUrl, Context context) {
final JSONObject[] jsonObject = {new JSONObject()};
try {
jsonObject[0].put("Roadlamp", 1);
} catch (JSONException e) {
e.printStackTrace();
}
Okhttp.postJsonByOkHttp(basicUrl +"control", jsonObject[0], new okhttp3.Callback() {
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, Response response) throws IOException {
String responseString = response.body().string();
try {
JSONObject jsonObject1 = new JSONObject(responseString);
if (jsonObject1.getString("result").equals("ok")) {
Http.lightResult = 1;
Status.Roadlamp = 1;
}
} catch (JSONException e) {
e.printStackTrace();
}
}
});
}
public static void closeLight(String basicUrl, Context context) {
final JSONObject[] jsonObject = {new JSONObject()};
try {
jsonObject[0].put("Roadlamp", 0);
} catch (JSONException e) {
e.printStackTrace();
}
Okhttp.postJsonByOkHttp(basicUrl +"control", jsonObject[0], new okhttp3.Callback() {
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, Response response) throws IOException {
String responseString = response.body().string();
try {
JSONObject jsonObject1 = new JSONObject(responseString);
if (jsonObject1.getString("result").equals("ok")) {
Http.lightResult = 0;
Status.Roadlamp = 0;
}
} catch (JSONException e) {
e.printStackTrace();
}
}
});
}
public static void openPump(String basicUrl, Context context) {
final JSONObject[] jsonObject = {new JSONObject()};
try {
jsonObject[0].put("WaterPump", 1);
} catch (JSONException e) {
e.printStackTrace();
}
Okhttp.postJsonByOkHttp(basicUrl +"control", jsonObject[0], new okhttp3.Callback() {
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, Response response) throws IOException {
String responseString = response.body().string();
try {
JSONObject jsonObject1 = new JSONObject(responseString);
if (jsonObject1.getString("result").equals("ok")) {
Http.pumpResult = 1;
Status.WaterPump = 1;
}
} catch (JSONException e) {
e.printStackTrace();
}
}
});
}
public static void closePump(String basicUrl, Context context) {
final JSONObject[] jsonObject = {new JSONObject()};
try {
jsonObject[0].put("WaterPump", 0);
} catch (JSONException e) {
e.printStackTrace();
}
Okhttp.postJsonByOkHttp(basicUrl +"control", jsonObject[0], new okhttp3.Callback() {
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, Response response) throws IOException {
String responseString = response.body().string();
try {
JSONObject jsonObject1 = new JSONObject(responseString);
if (jsonObject1.getString("result").equals("ok")) {
Http.pumpResult = 0;
Status.WaterPump = 0;
}
} catch (JSONException e) {
e.printStackTrace();
}
}
});
}
}
5、创建四个分类控制AirActivity,SunActivity,CO2Activity,TuActivity,并调用HTTP及Status方法,例如AirActivity
public class AirActivity extends AppCompatActivity implements View.OnClickListener{
private ImageView openFanImg;
private ImageView openLightImg;
private ImageView openPumpImg;
private ImageView openAlertImg;
private TextView airTemp;
private TextView airWet;
private void modifierBlowerStatus() {
if (Status.Blower == 0) {
openFanImg.setImageResource(R.mipmap.dakaifengshan);
Http.Result = 0;
} else if (Status.Blower == 1) {
openFanImg.setImageResource(R.mipmap.dakaifengshan2);
Http.Result = 1;
}
}
private void modifierBuzzerStatus() {
if (Status.Buzzer == 0) {
openAlertImg.setImageResource(R.mipmap.dakaibaojing);
Http.alertResult = 0;
} else if (Status.Buzzer == 1) {
openAlertImg.setImageResource(R.mipmap.dakaibaojing2);
Http.alertResult = 1;
}
}
private void modifierLightStatus() {
if (Status.Roadlamp == 0) {
openLightImg.setImageResource(R.mipmap.dakaiguangzhao);
Http.lightResult = 0;
} else if (Status.Roadlamp == 1) {
openLightImg.setImageResource(R.mipmap.dakaiguangzhao2);
Http.lightResult = 1;
}
}
private void modifierPumpStatus() {
if (Status.WaterPump == 0) {
openPumpImg.setImageResource(R.mipmap.dakaishui);
Http.pumpResult = 0;
} else if (Status.WaterPump == 1) {
openPumpImg.setImageResource(R.mipmap.dakaishui2);
Http.pumpResult = 1;
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_air);
bangID();
modifierBlowerStatus();
modifierBuzzerStatus();
modifierLightStatus();
modifierPumpStatus();
airTemp.setText(HomePageFragment.airTemperature+"");
airWet.setText(HomePageFragment.airHumidity+"");
}
private void bangID() {
openFanImg = findViewById(R.id.air_fan_img);
openLightImg = findViewById(R.id.air_light_img);
openPumpImg = findViewById(R.id.air_pump_img);
openAlertImg = findViewById(R.id.air_alert_img);
airTemp = findViewById(R.id.air_temp_values);
airWet = findViewById(R.id.air_wet_values);
openFanImg.setOnClickListener(this);
openLightImg.setOnClickListener(this);
openPumpImg.setOnClickListener(this);
openAlertImg.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.air_alert_img:
if (Http.alertResult == 0) {
openAlertImg.setImageResource(R.mipmap.dakaibaojing2);
Intent intent = getIntent();
String basicUrl = intent.getStringExtra("basicUrl");
Http.openAlert(basicUrl, AirActivity.this);
} else if (Http.alertResult == 1) {
openAlertImg.setImageResource(R.mipmap.dakaibaojing);
Intent intent = getIntent();
String basicUrl = intent.getStringExtra("basicUrl");
Http.closeAlert(basicUrl, AirActivity.this);
}
break;
case R.id.air_fan_img:
if (Http.Result == 0) {
openFanImg.setImageResource(R.mipmap.dakaifengshan2);
Intent intent = getIntent();
String basicUrl = intent.getStringExtra("basicUrl");
Http.openFan(basicUrl, AirActivity.this);
} else if (Http.Result == 1) {
openFanImg.setImageResource(R.mipmap.dakaifengshan);
Intent intent = getIntent();
String basicUrl = intent.getStringExtra("basicUrl");
Http.closeFan(basicUrl, AirActivity.this);
}
break;
case R.id.air_light_img:
if(Http.lightResult==0){
openLightImg.setImageResource(R.mipmap.dakaiguangzhao2);
Intent intent = getIntent();
String basicUrl = intent.getStringExtra("basicUrl");
Http.openLight(basicUrl,AirActivity.this);
}else if( Http.lightResult==1){
openLightImg.setImageResource(R.mipmap.dakaiguangzhao);
Intent intent = getIntent();
String basicUrl = intent.getStringExtra("basicUrl");
Http.closeLight(basicUrl,AirActivity.this);
}
break;
case R.id.air_pump_img:
if (Http.pumpResult == 0) {
openPumpImg.setImageResource(R.mipmap.dakaishui2);
Intent intent = getIntent();
String basicUrl = intent.getStringExtra("basicUrl");
Http.openPump(basicUrl, AirActivity.this);
} else if (Http.pumpResult == 1) {
openPumpImg.setImageResource(R.mipmap.dakaishui);
Intent intent = getIntent();
String basicUrl = intent.getStringExtra("basicUrl");
Http.closePump(basicUrl, AirActivity.this);
}
break;
}
}
}