package cn.com.basic.face.fragment;
|
|
import android.content.Context;
|
import android.net.wifi.WifiManager;
|
import android.os.Build;
|
import android.os.Bundle;
|
import android.os.Environment;
|
import android.os.SystemClock;
|
import android.text.format.Formatter;
|
import android.util.Log;
|
import android.view.SurfaceHolder;
|
import android.view.SurfaceView;
|
import android.view.View;
|
import android.widget.LinearLayout;
|
import android.widget.ProgressBar;
|
import android.widget.RadioButton;
|
import android.widget.RadioGroup;
|
import android.widget.RelativeLayout;
|
import android.widget.TextView;
|
|
import com.bsk.zhangbo.demoforbsk.R;
|
|
import cn.com.basic.face.base.BaseFragment;
|
|
import cn.com.basic.face.base.MainActivity;
|
import cn.com.basic.face.discern.common.CommonVariables;
|
import cn.com.basic.face.service.DeviceMng;
|
import cn.com.basic.face.util.RtspFaceNative;
|
|
import cn.com.basic.face.service.SurveillanceMng;
|
import cn.com.basic.face.util.SurveillancePhotoEmulateThread;
|
import cn.com.basic.face.widget.surveilance.SurveillanceBottomAttendanceListView;
|
import cn.com.basic.face.widget.surveilance.SurveillanceBottomVisitorListView;
|
|
import com.facebook.common.file.FileUtils;
|
import com.lidroid.xutils.view.annotation.ViewInject;
|
import com.lidroid.xutils.view.annotation.event.OnClick;
|
|
import java.io.BufferedReader;
|
import java.io.DataOutputStream;
|
import java.io.File;
|
import java.io.FileReader;
|
import java.net.InetAddress;
|
import java.net.NetworkInterface;
|
import java.net.SocketException;
|
import java.util.*;
|
|
public class SurveillanceFragment extends BaseFragment {
|
|
@ViewInject(R.id.fragment_supervisory_bottom_left_radio_group)
|
private RadioGroup fragment_supervisory_bottom_left_radio_group;
|
@ViewInject(R.id.fragment_supervisory_bottom_visitor_radio_button)
|
private RadioButton fragment_supervisory_bottom_visitor_radio_button;
|
@ViewInject(R.id.fragment_supervisory_bottom_visitor_background)
|
private View fragment_supervisory_bottom_visitor_background;
|
@ViewInject(R.id.fragment_supervisory_bottom_attendance_background)
|
private View fragment_supervisory_bottom_attendance_background;
|
@ViewInject(R.id.fragment_supervisory_bottom_visit_list_view)
|
private SurveillanceBottomVisitorListView fragment_supervisory_bottom_visit_list_view;
|
@ViewInject(R.id.fragment_supervisory_bottom_attendance_list_view)
|
private SurveillanceBottomAttendanceListView fragment_supervisory_bottom_attendance_list_view;
|
@ViewInject(R.id.fragment_supervisory_enter_camera)
|
private SurfaceView fragment_supervisory_enter_camera;
|
@ViewInject(R.id.fragment_supervisory_exit_camera)
|
private SurfaceView fragment_supervisory_exit_camera;
|
@ViewInject(R.id.fragment_surveillance_enter_timer)
|
private TextView fragment_surveillance_enter_timer;
|
@ViewInject(R.id.fragment_surveillance_exit_timer)
|
private TextView fragment_surveillance_exit_timer;
|
@ViewInject(R.id.fragment_supervisory_exit_camera_relative_layout)
|
private RelativeLayout fragment_supervisory_exit_camera_relative_layout;
|
@ViewInject(R.id.fragment_supervisory_enter_camera_relative_layout)
|
private RelativeLayout fragment_supervisory_enter_camera_relative_layout;
|
@ViewInject(R.id.fragment_surveillance_bottom_linear_layout)
|
private LinearLayout fragment_surveillance_bottom_linear_layout;
|
|
|
static boolean useNative = false;
|
|
public static boolean isEmulator() {
|
return Build.FINGERPRINT.startsWith("generic")
|
|| Build.FINGERPRINT.startsWith("unknown")
|
|| Build.MODEL.contains("google_sdk")
|
|| Build.MODEL.contains("Emulator")
|
|| Build.MODEL.contains("Android SDK built for x86")
|
|| Build.MANUFACTURER.contains("Genymotion")
|
|| (Build.BRAND.startsWith("generic") && Build.DEVICE.startsWith("generic"))
|
|| "google_sdk".equals(Build.PRODUCT);
|
}
|
|
static {
|
if (isEmulator()) {
|
useNative = false;
|
} else {
|
useNative = true;
|
}
|
if (CommonVariables.FACE_SERVER) {
|
useNative = false;
|
}
|
//useNative = false;
|
if (CommonVariables.EMULATOR) {
|
useNative = false;
|
}
|
if (useNative) {
|
System.loadLibrary("cvface_api");
|
System.loadLibrary("opencv_java3");
|
System.loadLibrary("protobuf-lite");
|
System.loadLibrary("protobuf");
|
System.loadLibrary("protoc");
|
System.loadLibrary("rtspface");
|
RtspFaceNative.init();
|
WifiManager wm = (WifiManager) MainActivity.getInstance().getSystemService(Context.WIFI_SERVICE);
|
String ip = Formatter.formatIpAddress(wm.getConnectionInfo().getIpAddress());
|
String ipAddress = null;
|
try {
|
for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) {
|
NetworkInterface intf = en.nextElement();
|
for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();) {
|
InetAddress inetAddress = enumIpAddr.nextElement();
|
if (!inetAddress.isLoopbackAddress()) {
|
String ip1 = inetAddress.getHostAddress().toString();
|
if (ip1.contains("192.")) {
|
ipAddress = ip1;
|
}
|
}
|
}
|
}
|
} catch (SocketException ex) {}
|
|
try{
|
//Process su = Runtime.getRuntime().exec("su");
|
//DataOutputStream outputStream = new DataOutputStream(su.getOutputStream());
|
|
//outputStream.writeBytes("busybox ifconfig wlan0 down\n");
|
//outputStream.flush();
|
//Thread.sleep(5000);
|
// outputStream.writeBytes("busybox ifconfig wlan0 hw ether f4:8b:32:62:4f:89\n");
|
// outputStream.flush();
|
|
//outputStream.writeBytes("exit\n");
|
//outputStream.flush();
|
//su.waitFor();
|
/*
|
busybox ifconfig wlan0 hw ether AC:83:F3:42:19:CE
|
|
|
*/
|
}catch(Exception e){
|
e.printStackTrace();
|
}
|
// outputStream.writeBytes("busybox ifconfig wlan0 hw ether 00:e0:2c:31:1a:ba\n");
|
RtspFaceNative.setLocalIP(ipAddress);
|
System.out.println("ipaddr="+ipAddress);
|
}
|
}
|
|
private static SurveillanceFragment instance = new SurveillanceFragment();
|
|
public static SurveillanceFragment getInstance() {
|
return instance;
|
}
|
|
public SurveillanceBottomVisitorListView get_fragment_supervisory_bottom_visitor_list_view() {
|
return fragment_supervisory_bottom_visit_list_view;
|
}
|
|
public SurveillanceBottomAttendanceListView get_fragment_supervisory_bottom_attendance_list_view() {
|
return fragment_supervisory_bottom_attendance_list_view;
|
}
|
|
@Override
|
protected int getLayoutId() {
|
return R.layout.fragment_surveillance;
|
}
|
|
@Override
|
protected void initViews(View view, Bundle savedInstanceState) {
|
if (CommonVariables.FACE_SERVER) {
|
fragment_supervisory_enter_camera_relative_layout.addView(MainActivity.getInstance().mPreview);
|
fragment_supervisory_enter_camera_relative_layout.addView(MainActivity.getInstance().mDraw);
|
//fragment_supervisory_exit_camera_relative_layout.setVisibility(View.GONE);
|
//fragment_surveillance_bottom_linear_layout.setVisibility(View.GONE);
|
}
|
fragment_supervisory_enter_camera.getHolder().addCallback(new SurfaceHolder.Callback() {
|
public void surfaceCreated(SurfaceHolder holder) {
|
new SurveillancePhotoEmulateThread().start();
|
if (useNative) {
|
RtspFaceNative.setSurface(Integer.parseInt(CommonVariables.Camera.IN), fragment_supervisory_enter_camera.getHolder().getSurface());
|
RtspFaceNative.createPlayer(Integer.parseInt(CommonVariables.Camera.IN), DeviceMng.getInstance().getCamera1Address());
|
RtspFaceNative.setFaceCallback(Integer.parseInt(CommonVariables.Camera.IN), "cn/com/basic/face/util/RtspFaceNative", "faceCallBack");
|
}
|
}
|
|
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {}
|
public void surfaceDestroyed(SurfaceHolder holder) {
|
System.out.println("surfaceDestroyed");
|
}
|
});
|
fragment_supervisory_exit_camera.getHolder().addCallback(new SurfaceHolder.Callback() {
|
public void surfaceCreated(SurfaceHolder holder) {
|
if (useNative) {
|
RtspFaceNative.setSurface(Integer.parseInt(CommonVariables.Camera.OUT), fragment_supervisory_exit_camera.getHolder().getSurface());
|
RtspFaceNative.createPlayer(Integer.parseInt(CommonVariables.Camera.OUT), DeviceMng.getInstance().getCamera2Address());
|
RtspFaceNative.setFaceCallback(Integer.parseInt(CommonVariables.Camera.OUT), "cn/com/basic/face/util/RtspFaceNative", "faceCallBack");
|
}
|
}
|
|
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
|
System.out.print("width="+width+",height="+height);
|
// if (useNative) {
|
// RtspFaceNative.setSurface(Integer.parseInt(CommonVariables.Camera.IN), fragment_supervisory_enter_camera.getHolder().getSurface());
|
// RtspFaceNative.createPlayer(Integer.parseInt(CommonVariables.Camera.IN), DeviceMng.getInstance().getCamera1Address());
|
// RtspFaceNative.setFaceCallback(Integer.parseInt(CommonVariables.Camera.IN), "cn/com/basic/face/util/RtspFaceNative", "faceCallBack");
|
// }
|
}
|
public void surfaceDestroyed(SurfaceHolder holder) {
|
System.out.println("surfaceDestroyed");
|
}
|
});
|
new SurveillanceMng.SurveillanceListThread().start();
|
}
|
|
@OnClick(R.id.fragment_supervisory_bottom_visitor_radio_button)
|
public void fragment_supervisory_bottom_visitor_radio_button_click(View view) {
|
fragment_supervisory_bottom_visitor_background.setVisibility(fragment_supervisory_bottom_visitor_radio_button.isChecked()?View.VISIBLE:View.GONE);
|
fragment_supervisory_bottom_visit_list_view.setVisibility(fragment_supervisory_bottom_visitor_radio_button.isChecked()?View.VISIBLE:View.GONE);
|
fragment_supervisory_bottom_attendance_background.setVisibility(!fragment_supervisory_bottom_visitor_radio_button.isChecked()?View.VISIBLE:View.GONE);
|
fragment_supervisory_bottom_attendance_list_view.setVisibility(!fragment_supervisory_bottom_visitor_radio_button.isChecked()?View.VISIBLE:View.GONE);
|
}
|
|
@OnClick(R.id.fragment_supervisory_bottom_attendance_radio_button)
|
public void fragment_supervisory_bottom_attendance_radio_button_click(View view) {
|
fragment_supervisory_bottom_visitor_background.setVisibility(fragment_supervisory_bottom_visitor_radio_button.isChecked()?View.VISIBLE:View.GONE);
|
fragment_supervisory_bottom_visit_list_view.setVisibility(fragment_supervisory_bottom_visitor_radio_button.isChecked()?View.VISIBLE:View.GONE);
|
fragment_supervisory_bottom_attendance_background.setVisibility(!fragment_supervisory_bottom_visitor_radio_button.isChecked()?View.VISIBLE:View.GONE);
|
fragment_supervisory_bottom_attendance_list_view.setVisibility(!fragment_supervisory_bottom_visitor_radio_button.isChecked()?View.VISIBLE:View.GONE);
|
}
|
|
@Override
|
protected void initListeners() {
|
fragment_supervisory_bottom_left_radio_group.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
|
@Override
|
public void onCheckedChanged(RadioGroup group, int checkedId) {
|
// fragment_supervisory_bottom_visitor_background.setVisibility(fragment_supervisory_bottom_visitor_radio_button.isChecked()?View.VISIBLE:View.GONE);
|
// fragment_supervisory_bottom_visit_list_view.setVisibility(fragment_supervisory_bottom_visitor_radio_button.isChecked()?View.VISIBLE:View.GONE);
|
// fragment_supervisory_bottom_attendance_background.setVisibility(!fragment_supervisory_bottom_visitor_radio_button.isChecked()?View.VISIBLE:View.GONE);
|
// fragment_supervisory_bottom_attendance_list_view.setVisibility(!fragment_supervisory_bottom_visitor_radio_button.isChecked()?View.VISIBLE:View.GONE);
|
// reloadBottomList();
|
}
|
});
|
}
|
|
@Override
|
public void setMenuVisibility(boolean menuVisible) {
|
super.setMenuVisibility(menuVisible);
|
if (menuVisible && fragment_supervisory_bottom_visit_list_view != null) {
|
}
|
}
|
|
}
|