diff --git a/app/build.gradle b/app/build.gradle index c2a2c53..64d4d0c 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -72,7 +72,7 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5.4' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.8' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.cardview:cardview:1.0.0' diff --git a/app/build.gradle b/app/build.gradle index c2a2c53..64d4d0c 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -72,7 +72,7 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5.4' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.8' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.cardview:cardview:1.0.0' diff --git a/app/src/main/java/com/casic/endoscope/adapter/CameraPointAdapter.kt b/app/src/main/java/com/casic/endoscope/adapter/CameraPointAdapter.kt deleted file mode 100644 index fe404b2..0000000 --- a/app/src/main/java/com/casic/endoscope/adapter/CameraPointAdapter.kt +++ /dev/null @@ -1,78 +0,0 @@ -package com.casic.endoscope.adapter - -import android.annotation.SuppressLint -import android.content.Context -import android.graphics.Color -import android.view.LayoutInflater -import android.view.ViewGroup -import android.widget.LinearLayout -import androidx.recyclerview.widget.RecyclerView -import com.casic.endoscope.R -import com.casic.endoscope.bean.CameraPointBean -import com.pengxh.kt.lite.adapter.ViewHolder -import com.pengxh.kt.lite.extensions.convertColor - -class CameraPointAdapter( - private val context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var multipleSelected = mutableSetOf() - private var selectedItems = ArrayList() - - override fun getItemCount(): Int = dataRows.size - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { - return ViewHolder( - LayoutInflater.from(context).inflate(R.layout.item_point_list_rv, parent, false) - ) - } - - @SuppressLint("NotifyDataSetChanged") - fun setRefreshData(dataRows: MutableList) { - this.dataRows.clear() - this.dataRows.addAll(dataRows) - notifyDataSetChanged() - multipleSelected.clear() - selectedItems.clear() - } - - override fun onBindViewHolder(holder: ViewHolder, position: Int) { - val item = dataRows[position] - holder.setText(R.id.stepNameView, "步骤 ${item.step}") - .setText(R.id.hAngleView, "水平角度 ${item.hAngle}°") - .setText(R.id.vAngleView, "垂直角度 ${item.vAngle}°") - - val linearLayout = holder.itemView.findViewById(R.id.rootView) - //item背景色 - if (position % 2 == 0) { - linearLayout.setBackgroundColor(Color.parseColor("#C8E3F4")) - } else { - linearLayout.setBackgroundColor(R.color.backgroundColor.convertColor(context)) - } - - holder.itemView.isSelected = multipleSelected.contains(position) - holder.itemView.setOnClickListener { - if (multipleSelected.contains(position)) { - multipleSelected.remove(position) - selectedItems.remove(dataRows[position]) - holder.itemView.isSelected = false - } else { - multipleSelected.add(position) - selectedItems.add(dataRows[position]) - holder.itemView.isSelected = true - } - - itemCheckedListener?.onItemChecked(position, selectedItems) - } - } - - private var itemCheckedListener: OnItemCheckedListener? = null - - interface OnItemCheckedListener { - fun onItemChecked(position: Int, items: ArrayList) - } - - fun setOnItemCheckedListener(listener: OnItemCheckedListener) { - itemCheckedListener = listener - } -} \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index c2a2c53..64d4d0c 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -72,7 +72,7 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5.4' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.8' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.cardview:cardview:1.0.0' diff --git a/app/src/main/java/com/casic/endoscope/adapter/CameraPointAdapter.kt b/app/src/main/java/com/casic/endoscope/adapter/CameraPointAdapter.kt deleted file mode 100644 index fe404b2..0000000 --- a/app/src/main/java/com/casic/endoscope/adapter/CameraPointAdapter.kt +++ /dev/null @@ -1,78 +0,0 @@ -package com.casic.endoscope.adapter - -import android.annotation.SuppressLint -import android.content.Context -import android.graphics.Color -import android.view.LayoutInflater -import android.view.ViewGroup -import android.widget.LinearLayout -import androidx.recyclerview.widget.RecyclerView -import com.casic.endoscope.R -import com.casic.endoscope.bean.CameraPointBean -import com.pengxh.kt.lite.adapter.ViewHolder -import com.pengxh.kt.lite.extensions.convertColor - -class CameraPointAdapter( - private val context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var multipleSelected = mutableSetOf() - private var selectedItems = ArrayList() - - override fun getItemCount(): Int = dataRows.size - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { - return ViewHolder( - LayoutInflater.from(context).inflate(R.layout.item_point_list_rv, parent, false) - ) - } - - @SuppressLint("NotifyDataSetChanged") - fun setRefreshData(dataRows: MutableList) { - this.dataRows.clear() - this.dataRows.addAll(dataRows) - notifyDataSetChanged() - multipleSelected.clear() - selectedItems.clear() - } - - override fun onBindViewHolder(holder: ViewHolder, position: Int) { - val item = dataRows[position] - holder.setText(R.id.stepNameView, "步骤 ${item.step}") - .setText(R.id.hAngleView, "水平角度 ${item.hAngle}°") - .setText(R.id.vAngleView, "垂直角度 ${item.vAngle}°") - - val linearLayout = holder.itemView.findViewById(R.id.rootView) - //item背景色 - if (position % 2 == 0) { - linearLayout.setBackgroundColor(Color.parseColor("#C8E3F4")) - } else { - linearLayout.setBackgroundColor(R.color.backgroundColor.convertColor(context)) - } - - holder.itemView.isSelected = multipleSelected.contains(position) - holder.itemView.setOnClickListener { - if (multipleSelected.contains(position)) { - multipleSelected.remove(position) - selectedItems.remove(dataRows[position]) - holder.itemView.isSelected = false - } else { - multipleSelected.add(position) - selectedItems.add(dataRows[position]) - holder.itemView.isSelected = true - } - - itemCheckedListener?.onItemChecked(position, selectedItems) - } - } - - private var itemCheckedListener: OnItemCheckedListener? = null - - interface OnItemCheckedListener { - fun onItemChecked(position: Int, items: ArrayList) - } - - fun setOnItemCheckedListener(listener: OnItemCheckedListener) { - itemCheckedListener = listener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/endoscope/bean/CameraPointBean.java b/app/src/main/java/com/casic/endoscope/bean/CameraPointBean.java deleted file mode 100644 index 3a20d82..0000000 --- a/app/src/main/java/com/casic/endoscope/bean/CameraPointBean.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.casic.endoscope.bean; - -import org.greenrobot.greendao.annotation.Entity; -import org.greenrobot.greendao.annotation.Generated; -import org.greenrobot.greendao.annotation.Id; - -/** - * 必须是java,不能是kt - */ -@Entity -public class CameraPointBean { - - @Id(autoincrement = true) - private Long id;//主键自增 - - private int step;//步骤序号 - private int hAngle;//水平角度 - private int vAngle;//垂直角度 - - @Generated(hash = 1436018650) - public CameraPointBean(Long id, int step, int hAngle, int vAngle) { - this.id = id; - this.step = step; - this.hAngle = hAngle; - this.vAngle = vAngle; - } - - @Generated(hash = 44086073) - public CameraPointBean() { - } - - public Long getId() { - return this.id; - } - - public void setId(Long id) { - this.id = id; - } - - public int getStep() { - return this.step; - } - - public void setStep(int step) { - this.step = step; - } - - public int getHAngle() { - return this.hAngle; - } - - public void setHAngle(int hAngle) { - this.hAngle = hAngle; - } - - public int getVAngle() { - return this.vAngle; - } - - public void setVAngle(int vAngle) { - this.vAngle = vAngle; - } -} diff --git a/app/build.gradle b/app/build.gradle index c2a2c53..64d4d0c 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -72,7 +72,7 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5.4' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.8' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.cardview:cardview:1.0.0' diff --git a/app/src/main/java/com/casic/endoscope/adapter/CameraPointAdapter.kt b/app/src/main/java/com/casic/endoscope/adapter/CameraPointAdapter.kt deleted file mode 100644 index fe404b2..0000000 --- a/app/src/main/java/com/casic/endoscope/adapter/CameraPointAdapter.kt +++ /dev/null @@ -1,78 +0,0 @@ -package com.casic.endoscope.adapter - -import android.annotation.SuppressLint -import android.content.Context -import android.graphics.Color -import android.view.LayoutInflater -import android.view.ViewGroup -import android.widget.LinearLayout -import androidx.recyclerview.widget.RecyclerView -import com.casic.endoscope.R -import com.casic.endoscope.bean.CameraPointBean -import com.pengxh.kt.lite.adapter.ViewHolder -import com.pengxh.kt.lite.extensions.convertColor - -class CameraPointAdapter( - private val context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var multipleSelected = mutableSetOf() - private var selectedItems = ArrayList() - - override fun getItemCount(): Int = dataRows.size - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { - return ViewHolder( - LayoutInflater.from(context).inflate(R.layout.item_point_list_rv, parent, false) - ) - } - - @SuppressLint("NotifyDataSetChanged") - fun setRefreshData(dataRows: MutableList) { - this.dataRows.clear() - this.dataRows.addAll(dataRows) - notifyDataSetChanged() - multipleSelected.clear() - selectedItems.clear() - } - - override fun onBindViewHolder(holder: ViewHolder, position: Int) { - val item = dataRows[position] - holder.setText(R.id.stepNameView, "步骤 ${item.step}") - .setText(R.id.hAngleView, "水平角度 ${item.hAngle}°") - .setText(R.id.vAngleView, "垂直角度 ${item.vAngle}°") - - val linearLayout = holder.itemView.findViewById(R.id.rootView) - //item背景色 - if (position % 2 == 0) { - linearLayout.setBackgroundColor(Color.parseColor("#C8E3F4")) - } else { - linearLayout.setBackgroundColor(R.color.backgroundColor.convertColor(context)) - } - - holder.itemView.isSelected = multipleSelected.contains(position) - holder.itemView.setOnClickListener { - if (multipleSelected.contains(position)) { - multipleSelected.remove(position) - selectedItems.remove(dataRows[position]) - holder.itemView.isSelected = false - } else { - multipleSelected.add(position) - selectedItems.add(dataRows[position]) - holder.itemView.isSelected = true - } - - itemCheckedListener?.onItemChecked(position, selectedItems) - } - } - - private var itemCheckedListener: OnItemCheckedListener? = null - - interface OnItemCheckedListener { - fun onItemChecked(position: Int, items: ArrayList) - } - - fun setOnItemCheckedListener(listener: OnItemCheckedListener) { - itemCheckedListener = listener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/endoscope/bean/CameraPointBean.java b/app/src/main/java/com/casic/endoscope/bean/CameraPointBean.java deleted file mode 100644 index 3a20d82..0000000 --- a/app/src/main/java/com/casic/endoscope/bean/CameraPointBean.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.casic.endoscope.bean; - -import org.greenrobot.greendao.annotation.Entity; -import org.greenrobot.greendao.annotation.Generated; -import org.greenrobot.greendao.annotation.Id; - -/** - * 必须是java,不能是kt - */ -@Entity -public class CameraPointBean { - - @Id(autoincrement = true) - private Long id;//主键自增 - - private int step;//步骤序号 - private int hAngle;//水平角度 - private int vAngle;//垂直角度 - - @Generated(hash = 1436018650) - public CameraPointBean(Long id, int step, int hAngle, int vAngle) { - this.id = id; - this.step = step; - this.hAngle = hAngle; - this.vAngle = vAngle; - } - - @Generated(hash = 44086073) - public CameraPointBean() { - } - - public Long getId() { - return this.id; - } - - public void setId(Long id) { - this.id = id; - } - - public int getStep() { - return this.step; - } - - public void setStep(int step) { - this.step = step; - } - - public int getHAngle() { - return this.hAngle; - } - - public void setHAngle(int hAngle) { - this.hAngle = hAngle; - } - - public int getVAngle() { - return this.vAngle; - } - - public void setVAngle(int vAngle) { - this.vAngle = vAngle; - } -} diff --git a/app/src/main/java/com/casic/endoscope/bean/GasValueBean.java b/app/src/main/java/com/casic/endoscope/bean/GasValueBean.java new file mode 100644 index 0000000..6537b9a --- /dev/null +++ b/app/src/main/java/com/casic/endoscope/bean/GasValueBean.java @@ -0,0 +1,63 @@ +package com.casic.endoscope.bean; + +import org.greenrobot.greendao.annotation.Entity; +import org.greenrobot.greendao.annotation.Generated; +import org.greenrobot.greendao.annotation.Id; + +/** + * 必须是java,不能是kt + * 甲烷浓度表结构 + */ +@Entity +public class GasValueBean { + @Id(autoincrement = true) + private Long id;//主键自增 + + private String time;//采集浓度的时间 + private int value;//采集的浓度 + private String location;//浓度采集点位置 + + @Generated(hash = 663679791) + public GasValueBean(Long id, String time, int value, String location) { + this.id = id; + this.time = time; + this.value = value; + this.location = location; + } + + @Generated(hash = 291409217) + public GasValueBean() { + } + + public Long getId() { + return this.id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getTime() { + return this.time; + } + + public void setTime(String time) { + this.time = time; + } + + public int getValue() { + return this.value; + } + + public void setValue(int value) { + this.value = value; + } + + public String getLocation() { + return this.location; + } + + public void setLocation(String location) { + this.location = location; + } +} diff --git a/app/build.gradle b/app/build.gradle index c2a2c53..64d4d0c 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -72,7 +72,7 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5.4' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.8' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.cardview:cardview:1.0.0' diff --git a/app/src/main/java/com/casic/endoscope/adapter/CameraPointAdapter.kt b/app/src/main/java/com/casic/endoscope/adapter/CameraPointAdapter.kt deleted file mode 100644 index fe404b2..0000000 --- a/app/src/main/java/com/casic/endoscope/adapter/CameraPointAdapter.kt +++ /dev/null @@ -1,78 +0,0 @@ -package com.casic.endoscope.adapter - -import android.annotation.SuppressLint -import android.content.Context -import android.graphics.Color -import android.view.LayoutInflater -import android.view.ViewGroup -import android.widget.LinearLayout -import androidx.recyclerview.widget.RecyclerView -import com.casic.endoscope.R -import com.casic.endoscope.bean.CameraPointBean -import com.pengxh.kt.lite.adapter.ViewHolder -import com.pengxh.kt.lite.extensions.convertColor - -class CameraPointAdapter( - private val context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var multipleSelected = mutableSetOf() - private var selectedItems = ArrayList() - - override fun getItemCount(): Int = dataRows.size - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { - return ViewHolder( - LayoutInflater.from(context).inflate(R.layout.item_point_list_rv, parent, false) - ) - } - - @SuppressLint("NotifyDataSetChanged") - fun setRefreshData(dataRows: MutableList) { - this.dataRows.clear() - this.dataRows.addAll(dataRows) - notifyDataSetChanged() - multipleSelected.clear() - selectedItems.clear() - } - - override fun onBindViewHolder(holder: ViewHolder, position: Int) { - val item = dataRows[position] - holder.setText(R.id.stepNameView, "步骤 ${item.step}") - .setText(R.id.hAngleView, "水平角度 ${item.hAngle}°") - .setText(R.id.vAngleView, "垂直角度 ${item.vAngle}°") - - val linearLayout = holder.itemView.findViewById(R.id.rootView) - //item背景色 - if (position % 2 == 0) { - linearLayout.setBackgroundColor(Color.parseColor("#C8E3F4")) - } else { - linearLayout.setBackgroundColor(R.color.backgroundColor.convertColor(context)) - } - - holder.itemView.isSelected = multipleSelected.contains(position) - holder.itemView.setOnClickListener { - if (multipleSelected.contains(position)) { - multipleSelected.remove(position) - selectedItems.remove(dataRows[position]) - holder.itemView.isSelected = false - } else { - multipleSelected.add(position) - selectedItems.add(dataRows[position]) - holder.itemView.isSelected = true - } - - itemCheckedListener?.onItemChecked(position, selectedItems) - } - } - - private var itemCheckedListener: OnItemCheckedListener? = null - - interface OnItemCheckedListener { - fun onItemChecked(position: Int, items: ArrayList) - } - - fun setOnItemCheckedListener(listener: OnItemCheckedListener) { - itemCheckedListener = listener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/endoscope/bean/CameraPointBean.java b/app/src/main/java/com/casic/endoscope/bean/CameraPointBean.java deleted file mode 100644 index 3a20d82..0000000 --- a/app/src/main/java/com/casic/endoscope/bean/CameraPointBean.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.casic.endoscope.bean; - -import org.greenrobot.greendao.annotation.Entity; -import org.greenrobot.greendao.annotation.Generated; -import org.greenrobot.greendao.annotation.Id; - -/** - * 必须是java,不能是kt - */ -@Entity -public class CameraPointBean { - - @Id(autoincrement = true) - private Long id;//主键自增 - - private int step;//步骤序号 - private int hAngle;//水平角度 - private int vAngle;//垂直角度 - - @Generated(hash = 1436018650) - public CameraPointBean(Long id, int step, int hAngle, int vAngle) { - this.id = id; - this.step = step; - this.hAngle = hAngle; - this.vAngle = vAngle; - } - - @Generated(hash = 44086073) - public CameraPointBean() { - } - - public Long getId() { - return this.id; - } - - public void setId(Long id) { - this.id = id; - } - - public int getStep() { - return this.step; - } - - public void setStep(int step) { - this.step = step; - } - - public int getHAngle() { - return this.hAngle; - } - - public void setHAngle(int hAngle) { - this.hAngle = hAngle; - } - - public int getVAngle() { - return this.vAngle; - } - - public void setVAngle(int vAngle) { - this.vAngle = vAngle; - } -} diff --git a/app/src/main/java/com/casic/endoscope/bean/GasValueBean.java b/app/src/main/java/com/casic/endoscope/bean/GasValueBean.java new file mode 100644 index 0000000..6537b9a --- /dev/null +++ b/app/src/main/java/com/casic/endoscope/bean/GasValueBean.java @@ -0,0 +1,63 @@ +package com.casic.endoscope.bean; + +import org.greenrobot.greendao.annotation.Entity; +import org.greenrobot.greendao.annotation.Generated; +import org.greenrobot.greendao.annotation.Id; + +/** + * 必须是java,不能是kt + * 甲烷浓度表结构 + */ +@Entity +public class GasValueBean { + @Id(autoincrement = true) + private Long id;//主键自增 + + private String time;//采集浓度的时间 + private int value;//采集的浓度 + private String location;//浓度采集点位置 + + @Generated(hash = 663679791) + public GasValueBean(Long id, String time, int value, String location) { + this.id = id; + this.time = time; + this.value = value; + this.location = location; + } + + @Generated(hash = 291409217) + public GasValueBean() { + } + + public Long getId() { + return this.id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getTime() { + return this.time; + } + + public void setTime(String time) { + this.time = time; + } + + public int getValue() { + return this.value; + } + + public void setValue(int value) { + this.value = value; + } + + public String getLocation() { + return this.location; + } + + public void setLocation(String location) { + this.location = location; + } +} diff --git a/app/src/main/java/com/casic/endoscope/greendao/CameraPointBeanDao.java b/app/src/main/java/com/casic/endoscope/greendao/CameraPointBeanDao.java deleted file mode 100644 index 11bc932..0000000 --- a/app/src/main/java/com/casic/endoscope/greendao/CameraPointBeanDao.java +++ /dev/null @@ -1,138 +0,0 @@ -package com.casic.endoscope.greendao; - -import android.database.Cursor; -import android.database.sqlite.SQLiteStatement; - -import com.casic.endoscope.bean.CameraPointBean; - -import org.greenrobot.greendao.AbstractDao; -import org.greenrobot.greendao.Property; -import org.greenrobot.greendao.database.Database; -import org.greenrobot.greendao.database.DatabaseStatement; -import org.greenrobot.greendao.internal.DaoConfig; - -// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. - -/** - * DAO for table "CAMERA_POINT_BEAN". - */ -public class CameraPointBeanDao extends AbstractDao { - - public static final String TABLENAME = "CAMERA_POINT_BEAN"; - - /** - * Properties of entity CameraPointBean.
- * Can be used for QueryBuilder and for referencing column names. - */ - public static class Properties { - public final static Property Id = new Property(0, Long.class, "id", true, "_id"); - public final static Property Step = new Property(1, int.class, "step", false, "STEP"); - public final static Property HAngle = new Property(2, int.class, "hAngle", false, "H_ANGLE"); - public final static Property VAngle = new Property(3, int.class, "vAngle", false, "V_ANGLE"); - } - - - public CameraPointBeanDao(DaoConfig config) { - super(config); - } - - public CameraPointBeanDao(DaoConfig config, DaoSession daoSession) { - super(config, daoSession); - } - - /** - * Creates the underlying database table. - */ - public static void createTable(Database db, boolean ifNotExists) { - String constraint = ifNotExists ? "IF NOT EXISTS " : ""; - db.execSQL("CREATE TABLE " + constraint + "\"CAMERA_POINT_BEAN\" (" + // - "\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id - "\"STEP\" INTEGER NOT NULL ," + // 1: step - "\"H_ANGLE\" INTEGER NOT NULL ," + // 2: hAngle - "\"V_ANGLE\" INTEGER NOT NULL );"); // 3: vAngle - } - - /** - * Drops the underlying database table. - */ - public static void dropTable(Database db, boolean ifExists) { - String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"CAMERA_POINT_BEAN\""; - db.execSQL(sql); - } - - @Override - protected final void bindValues(DatabaseStatement stmt, CameraPointBean entity) { - stmt.clearBindings(); - - Long id = entity.getId(); - if (id != null) { - stmt.bindLong(1, id); - } - stmt.bindLong(2, entity.getStep()); - stmt.bindLong(3, entity.getHAngle()); - stmt.bindLong(4, entity.getVAngle()); - } - - @Override - protected final void bindValues(SQLiteStatement stmt, CameraPointBean entity) { - stmt.clearBindings(); - - Long id = entity.getId(); - if (id != null) { - stmt.bindLong(1, id); - } - stmt.bindLong(2, entity.getStep()); - stmt.bindLong(3, entity.getHAngle()); - stmt.bindLong(4, entity.getVAngle()); - } - - @Override - public Long readKey(Cursor cursor, int offset) { - return cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0); - } - - @Override - public CameraPointBean readEntity(Cursor cursor, int offset) { - CameraPointBean entity = new CameraPointBean( // - cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id - cursor.getInt(offset + 1), // step - cursor.getInt(offset + 2), // hAngle - cursor.getInt(offset + 3) // vAngle - ); - return entity; - } - - @Override - public void readEntity(Cursor cursor, CameraPointBean entity, int offset) { - entity.setId(cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0)); - entity.setStep(cursor.getInt(offset + 1)); - entity.setHAngle(cursor.getInt(offset + 2)); - entity.setVAngle(cursor.getInt(offset + 3)); - } - - @Override - protected final Long updateKeyAfterInsert(CameraPointBean entity, long rowId) { - entity.setId(rowId); - return rowId; - } - - @Override - public Long getKey(CameraPointBean entity) { - if (entity != null) { - return entity.getId(); - } else { - return null; - } - } - - @Override - public boolean hasKey(CameraPointBean entity) { - return entity.getId() != null; - } - - @Override - protected final boolean isEntityUpdateable() { - return true; - } - -} diff --git a/app/build.gradle b/app/build.gradle index c2a2c53..64d4d0c 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -72,7 +72,7 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5.4' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.8' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.cardview:cardview:1.0.0' diff --git a/app/src/main/java/com/casic/endoscope/adapter/CameraPointAdapter.kt b/app/src/main/java/com/casic/endoscope/adapter/CameraPointAdapter.kt deleted file mode 100644 index fe404b2..0000000 --- a/app/src/main/java/com/casic/endoscope/adapter/CameraPointAdapter.kt +++ /dev/null @@ -1,78 +0,0 @@ -package com.casic.endoscope.adapter - -import android.annotation.SuppressLint -import android.content.Context -import android.graphics.Color -import android.view.LayoutInflater -import android.view.ViewGroup -import android.widget.LinearLayout -import androidx.recyclerview.widget.RecyclerView -import com.casic.endoscope.R -import com.casic.endoscope.bean.CameraPointBean -import com.pengxh.kt.lite.adapter.ViewHolder -import com.pengxh.kt.lite.extensions.convertColor - -class CameraPointAdapter( - private val context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var multipleSelected = mutableSetOf() - private var selectedItems = ArrayList() - - override fun getItemCount(): Int = dataRows.size - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { - return ViewHolder( - LayoutInflater.from(context).inflate(R.layout.item_point_list_rv, parent, false) - ) - } - - @SuppressLint("NotifyDataSetChanged") - fun setRefreshData(dataRows: MutableList) { - this.dataRows.clear() - this.dataRows.addAll(dataRows) - notifyDataSetChanged() - multipleSelected.clear() - selectedItems.clear() - } - - override fun onBindViewHolder(holder: ViewHolder, position: Int) { - val item = dataRows[position] - holder.setText(R.id.stepNameView, "步骤 ${item.step}") - .setText(R.id.hAngleView, "水平角度 ${item.hAngle}°") - .setText(R.id.vAngleView, "垂直角度 ${item.vAngle}°") - - val linearLayout = holder.itemView.findViewById(R.id.rootView) - //item背景色 - if (position % 2 == 0) { - linearLayout.setBackgroundColor(Color.parseColor("#C8E3F4")) - } else { - linearLayout.setBackgroundColor(R.color.backgroundColor.convertColor(context)) - } - - holder.itemView.isSelected = multipleSelected.contains(position) - holder.itemView.setOnClickListener { - if (multipleSelected.contains(position)) { - multipleSelected.remove(position) - selectedItems.remove(dataRows[position]) - holder.itemView.isSelected = false - } else { - multipleSelected.add(position) - selectedItems.add(dataRows[position]) - holder.itemView.isSelected = true - } - - itemCheckedListener?.onItemChecked(position, selectedItems) - } - } - - private var itemCheckedListener: OnItemCheckedListener? = null - - interface OnItemCheckedListener { - fun onItemChecked(position: Int, items: ArrayList) - } - - fun setOnItemCheckedListener(listener: OnItemCheckedListener) { - itemCheckedListener = listener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/endoscope/bean/CameraPointBean.java b/app/src/main/java/com/casic/endoscope/bean/CameraPointBean.java deleted file mode 100644 index 3a20d82..0000000 --- a/app/src/main/java/com/casic/endoscope/bean/CameraPointBean.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.casic.endoscope.bean; - -import org.greenrobot.greendao.annotation.Entity; -import org.greenrobot.greendao.annotation.Generated; -import org.greenrobot.greendao.annotation.Id; - -/** - * 必须是java,不能是kt - */ -@Entity -public class CameraPointBean { - - @Id(autoincrement = true) - private Long id;//主键自增 - - private int step;//步骤序号 - private int hAngle;//水平角度 - private int vAngle;//垂直角度 - - @Generated(hash = 1436018650) - public CameraPointBean(Long id, int step, int hAngle, int vAngle) { - this.id = id; - this.step = step; - this.hAngle = hAngle; - this.vAngle = vAngle; - } - - @Generated(hash = 44086073) - public CameraPointBean() { - } - - public Long getId() { - return this.id; - } - - public void setId(Long id) { - this.id = id; - } - - public int getStep() { - return this.step; - } - - public void setStep(int step) { - this.step = step; - } - - public int getHAngle() { - return this.hAngle; - } - - public void setHAngle(int hAngle) { - this.hAngle = hAngle; - } - - public int getVAngle() { - return this.vAngle; - } - - public void setVAngle(int vAngle) { - this.vAngle = vAngle; - } -} diff --git a/app/src/main/java/com/casic/endoscope/bean/GasValueBean.java b/app/src/main/java/com/casic/endoscope/bean/GasValueBean.java new file mode 100644 index 0000000..6537b9a --- /dev/null +++ b/app/src/main/java/com/casic/endoscope/bean/GasValueBean.java @@ -0,0 +1,63 @@ +package com.casic.endoscope.bean; + +import org.greenrobot.greendao.annotation.Entity; +import org.greenrobot.greendao.annotation.Generated; +import org.greenrobot.greendao.annotation.Id; + +/** + * 必须是java,不能是kt + * 甲烷浓度表结构 + */ +@Entity +public class GasValueBean { + @Id(autoincrement = true) + private Long id;//主键自增 + + private String time;//采集浓度的时间 + private int value;//采集的浓度 + private String location;//浓度采集点位置 + + @Generated(hash = 663679791) + public GasValueBean(Long id, String time, int value, String location) { + this.id = id; + this.time = time; + this.value = value; + this.location = location; + } + + @Generated(hash = 291409217) + public GasValueBean() { + } + + public Long getId() { + return this.id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getTime() { + return this.time; + } + + public void setTime(String time) { + this.time = time; + } + + public int getValue() { + return this.value; + } + + public void setValue(int value) { + this.value = value; + } + + public String getLocation() { + return this.location; + } + + public void setLocation(String location) { + this.location = location; + } +} diff --git a/app/src/main/java/com/casic/endoscope/greendao/CameraPointBeanDao.java b/app/src/main/java/com/casic/endoscope/greendao/CameraPointBeanDao.java deleted file mode 100644 index 11bc932..0000000 --- a/app/src/main/java/com/casic/endoscope/greendao/CameraPointBeanDao.java +++ /dev/null @@ -1,138 +0,0 @@ -package com.casic.endoscope.greendao; - -import android.database.Cursor; -import android.database.sqlite.SQLiteStatement; - -import com.casic.endoscope.bean.CameraPointBean; - -import org.greenrobot.greendao.AbstractDao; -import org.greenrobot.greendao.Property; -import org.greenrobot.greendao.database.Database; -import org.greenrobot.greendao.database.DatabaseStatement; -import org.greenrobot.greendao.internal.DaoConfig; - -// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. - -/** - * DAO for table "CAMERA_POINT_BEAN". - */ -public class CameraPointBeanDao extends AbstractDao { - - public static final String TABLENAME = "CAMERA_POINT_BEAN"; - - /** - * Properties of entity CameraPointBean.
- * Can be used for QueryBuilder and for referencing column names. - */ - public static class Properties { - public final static Property Id = new Property(0, Long.class, "id", true, "_id"); - public final static Property Step = new Property(1, int.class, "step", false, "STEP"); - public final static Property HAngle = new Property(2, int.class, "hAngle", false, "H_ANGLE"); - public final static Property VAngle = new Property(3, int.class, "vAngle", false, "V_ANGLE"); - } - - - public CameraPointBeanDao(DaoConfig config) { - super(config); - } - - public CameraPointBeanDao(DaoConfig config, DaoSession daoSession) { - super(config, daoSession); - } - - /** - * Creates the underlying database table. - */ - public static void createTable(Database db, boolean ifNotExists) { - String constraint = ifNotExists ? "IF NOT EXISTS " : ""; - db.execSQL("CREATE TABLE " + constraint + "\"CAMERA_POINT_BEAN\" (" + // - "\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id - "\"STEP\" INTEGER NOT NULL ," + // 1: step - "\"H_ANGLE\" INTEGER NOT NULL ," + // 2: hAngle - "\"V_ANGLE\" INTEGER NOT NULL );"); // 3: vAngle - } - - /** - * Drops the underlying database table. - */ - public static void dropTable(Database db, boolean ifExists) { - String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"CAMERA_POINT_BEAN\""; - db.execSQL(sql); - } - - @Override - protected final void bindValues(DatabaseStatement stmt, CameraPointBean entity) { - stmt.clearBindings(); - - Long id = entity.getId(); - if (id != null) { - stmt.bindLong(1, id); - } - stmt.bindLong(2, entity.getStep()); - stmt.bindLong(3, entity.getHAngle()); - stmt.bindLong(4, entity.getVAngle()); - } - - @Override - protected final void bindValues(SQLiteStatement stmt, CameraPointBean entity) { - stmt.clearBindings(); - - Long id = entity.getId(); - if (id != null) { - stmt.bindLong(1, id); - } - stmt.bindLong(2, entity.getStep()); - stmt.bindLong(3, entity.getHAngle()); - stmt.bindLong(4, entity.getVAngle()); - } - - @Override - public Long readKey(Cursor cursor, int offset) { - return cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0); - } - - @Override - public CameraPointBean readEntity(Cursor cursor, int offset) { - CameraPointBean entity = new CameraPointBean( // - cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id - cursor.getInt(offset + 1), // step - cursor.getInt(offset + 2), // hAngle - cursor.getInt(offset + 3) // vAngle - ); - return entity; - } - - @Override - public void readEntity(Cursor cursor, CameraPointBean entity, int offset) { - entity.setId(cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0)); - entity.setStep(cursor.getInt(offset + 1)); - entity.setHAngle(cursor.getInt(offset + 2)); - entity.setVAngle(cursor.getInt(offset + 3)); - } - - @Override - protected final Long updateKeyAfterInsert(CameraPointBean entity, long rowId) { - entity.setId(rowId); - return rowId; - } - - @Override - public Long getKey(CameraPointBean entity) { - if (entity != null) { - return entity.getId(); - } else { - return null; - } - } - - @Override - public boolean hasKey(CameraPointBean entity) { - return entity.getId() != null; - } - - @Override - protected final boolean isEntityUpdateable() { - return true; - } - -} diff --git a/app/src/main/java/com/casic/endoscope/greendao/DaoMaster.java b/app/src/main/java/com/casic/endoscope/greendao/DaoMaster.java index 5d4fa30..a455fd0 100644 --- a/app/src/main/java/com/casic/endoscope/greendao/DaoMaster.java +++ b/app/src/main/java/com/casic/endoscope/greendao/DaoMaster.java @@ -13,25 +13,20 @@ // THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. - /** * Master of DAO (schema version 1): knows all DAOs. */ public class DaoMaster extends AbstractDaoMaster { public static final int SCHEMA_VERSION = 1; - /** - * Creates underlying database table using DAOs. - */ + /** Creates underlying database table using DAOs. */ public static void createAllTables(Database db, boolean ifNotExists) { - CameraPointBeanDao.createTable(db, ifNotExists); + GasValueBeanDao.createTable(db, ifNotExists); } - /** - * Drops underlying database table using DAOs. - */ + /** Drops underlying database table using DAOs. */ public static void dropAllTables(Database db, boolean ifExists) { - CameraPointBeanDao.dropTable(db, ifExists); + GasValueBeanDao.dropTable(db, ifExists); } /** @@ -50,7 +45,7 @@ public DaoMaster(Database db) { super(db, SCHEMA_VERSION); - registerDaoClass(CameraPointBeanDao.class); + registerDaoClass(GasValueBeanDao.class); } public DaoSession newSession() { @@ -80,9 +75,7 @@ } } - /** - * WARNING: Drops all table on Upgrade! Use only during development. - */ + /** WARNING: Drops all table on Upgrade! Use only during development. */ public static class DevOpenHelper extends OpenHelper { public DevOpenHelper(Context context, String name) { super(context, name); diff --git a/app/build.gradle b/app/build.gradle index c2a2c53..64d4d0c 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -72,7 +72,7 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5.4' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.8' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.cardview:cardview:1.0.0' diff --git a/app/src/main/java/com/casic/endoscope/adapter/CameraPointAdapter.kt b/app/src/main/java/com/casic/endoscope/adapter/CameraPointAdapter.kt deleted file mode 100644 index fe404b2..0000000 --- a/app/src/main/java/com/casic/endoscope/adapter/CameraPointAdapter.kt +++ /dev/null @@ -1,78 +0,0 @@ -package com.casic.endoscope.adapter - -import android.annotation.SuppressLint -import android.content.Context -import android.graphics.Color -import android.view.LayoutInflater -import android.view.ViewGroup -import android.widget.LinearLayout -import androidx.recyclerview.widget.RecyclerView -import com.casic.endoscope.R -import com.casic.endoscope.bean.CameraPointBean -import com.pengxh.kt.lite.adapter.ViewHolder -import com.pengxh.kt.lite.extensions.convertColor - -class CameraPointAdapter( - private val context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var multipleSelected = mutableSetOf() - private var selectedItems = ArrayList() - - override fun getItemCount(): Int = dataRows.size - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { - return ViewHolder( - LayoutInflater.from(context).inflate(R.layout.item_point_list_rv, parent, false) - ) - } - - @SuppressLint("NotifyDataSetChanged") - fun setRefreshData(dataRows: MutableList) { - this.dataRows.clear() - this.dataRows.addAll(dataRows) - notifyDataSetChanged() - multipleSelected.clear() - selectedItems.clear() - } - - override fun onBindViewHolder(holder: ViewHolder, position: Int) { - val item = dataRows[position] - holder.setText(R.id.stepNameView, "步骤 ${item.step}") - .setText(R.id.hAngleView, "水平角度 ${item.hAngle}°") - .setText(R.id.vAngleView, "垂直角度 ${item.vAngle}°") - - val linearLayout = holder.itemView.findViewById(R.id.rootView) - //item背景色 - if (position % 2 == 0) { - linearLayout.setBackgroundColor(Color.parseColor("#C8E3F4")) - } else { - linearLayout.setBackgroundColor(R.color.backgroundColor.convertColor(context)) - } - - holder.itemView.isSelected = multipleSelected.contains(position) - holder.itemView.setOnClickListener { - if (multipleSelected.contains(position)) { - multipleSelected.remove(position) - selectedItems.remove(dataRows[position]) - holder.itemView.isSelected = false - } else { - multipleSelected.add(position) - selectedItems.add(dataRows[position]) - holder.itemView.isSelected = true - } - - itemCheckedListener?.onItemChecked(position, selectedItems) - } - } - - private var itemCheckedListener: OnItemCheckedListener? = null - - interface OnItemCheckedListener { - fun onItemChecked(position: Int, items: ArrayList) - } - - fun setOnItemCheckedListener(listener: OnItemCheckedListener) { - itemCheckedListener = listener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/endoscope/bean/CameraPointBean.java b/app/src/main/java/com/casic/endoscope/bean/CameraPointBean.java deleted file mode 100644 index 3a20d82..0000000 --- a/app/src/main/java/com/casic/endoscope/bean/CameraPointBean.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.casic.endoscope.bean; - -import org.greenrobot.greendao.annotation.Entity; -import org.greenrobot.greendao.annotation.Generated; -import org.greenrobot.greendao.annotation.Id; - -/** - * 必须是java,不能是kt - */ -@Entity -public class CameraPointBean { - - @Id(autoincrement = true) - private Long id;//主键自增 - - private int step;//步骤序号 - private int hAngle;//水平角度 - private int vAngle;//垂直角度 - - @Generated(hash = 1436018650) - public CameraPointBean(Long id, int step, int hAngle, int vAngle) { - this.id = id; - this.step = step; - this.hAngle = hAngle; - this.vAngle = vAngle; - } - - @Generated(hash = 44086073) - public CameraPointBean() { - } - - public Long getId() { - return this.id; - } - - public void setId(Long id) { - this.id = id; - } - - public int getStep() { - return this.step; - } - - public void setStep(int step) { - this.step = step; - } - - public int getHAngle() { - return this.hAngle; - } - - public void setHAngle(int hAngle) { - this.hAngle = hAngle; - } - - public int getVAngle() { - return this.vAngle; - } - - public void setVAngle(int vAngle) { - this.vAngle = vAngle; - } -} diff --git a/app/src/main/java/com/casic/endoscope/bean/GasValueBean.java b/app/src/main/java/com/casic/endoscope/bean/GasValueBean.java new file mode 100644 index 0000000..6537b9a --- /dev/null +++ b/app/src/main/java/com/casic/endoscope/bean/GasValueBean.java @@ -0,0 +1,63 @@ +package com.casic.endoscope.bean; + +import org.greenrobot.greendao.annotation.Entity; +import org.greenrobot.greendao.annotation.Generated; +import org.greenrobot.greendao.annotation.Id; + +/** + * 必须是java,不能是kt + * 甲烷浓度表结构 + */ +@Entity +public class GasValueBean { + @Id(autoincrement = true) + private Long id;//主键自增 + + private String time;//采集浓度的时间 + private int value;//采集的浓度 + private String location;//浓度采集点位置 + + @Generated(hash = 663679791) + public GasValueBean(Long id, String time, int value, String location) { + this.id = id; + this.time = time; + this.value = value; + this.location = location; + } + + @Generated(hash = 291409217) + public GasValueBean() { + } + + public Long getId() { + return this.id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getTime() { + return this.time; + } + + public void setTime(String time) { + this.time = time; + } + + public int getValue() { + return this.value; + } + + public void setValue(int value) { + this.value = value; + } + + public String getLocation() { + return this.location; + } + + public void setLocation(String location) { + this.location = location; + } +} diff --git a/app/src/main/java/com/casic/endoscope/greendao/CameraPointBeanDao.java b/app/src/main/java/com/casic/endoscope/greendao/CameraPointBeanDao.java deleted file mode 100644 index 11bc932..0000000 --- a/app/src/main/java/com/casic/endoscope/greendao/CameraPointBeanDao.java +++ /dev/null @@ -1,138 +0,0 @@ -package com.casic.endoscope.greendao; - -import android.database.Cursor; -import android.database.sqlite.SQLiteStatement; - -import com.casic.endoscope.bean.CameraPointBean; - -import org.greenrobot.greendao.AbstractDao; -import org.greenrobot.greendao.Property; -import org.greenrobot.greendao.database.Database; -import org.greenrobot.greendao.database.DatabaseStatement; -import org.greenrobot.greendao.internal.DaoConfig; - -// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. - -/** - * DAO for table "CAMERA_POINT_BEAN". - */ -public class CameraPointBeanDao extends AbstractDao { - - public static final String TABLENAME = "CAMERA_POINT_BEAN"; - - /** - * Properties of entity CameraPointBean.
- * Can be used for QueryBuilder and for referencing column names. - */ - public static class Properties { - public final static Property Id = new Property(0, Long.class, "id", true, "_id"); - public final static Property Step = new Property(1, int.class, "step", false, "STEP"); - public final static Property HAngle = new Property(2, int.class, "hAngle", false, "H_ANGLE"); - public final static Property VAngle = new Property(3, int.class, "vAngle", false, "V_ANGLE"); - } - - - public CameraPointBeanDao(DaoConfig config) { - super(config); - } - - public CameraPointBeanDao(DaoConfig config, DaoSession daoSession) { - super(config, daoSession); - } - - /** - * Creates the underlying database table. - */ - public static void createTable(Database db, boolean ifNotExists) { - String constraint = ifNotExists ? "IF NOT EXISTS " : ""; - db.execSQL("CREATE TABLE " + constraint + "\"CAMERA_POINT_BEAN\" (" + // - "\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id - "\"STEP\" INTEGER NOT NULL ," + // 1: step - "\"H_ANGLE\" INTEGER NOT NULL ," + // 2: hAngle - "\"V_ANGLE\" INTEGER NOT NULL );"); // 3: vAngle - } - - /** - * Drops the underlying database table. - */ - public static void dropTable(Database db, boolean ifExists) { - String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"CAMERA_POINT_BEAN\""; - db.execSQL(sql); - } - - @Override - protected final void bindValues(DatabaseStatement stmt, CameraPointBean entity) { - stmt.clearBindings(); - - Long id = entity.getId(); - if (id != null) { - stmt.bindLong(1, id); - } - stmt.bindLong(2, entity.getStep()); - stmt.bindLong(3, entity.getHAngle()); - stmt.bindLong(4, entity.getVAngle()); - } - - @Override - protected final void bindValues(SQLiteStatement stmt, CameraPointBean entity) { - stmt.clearBindings(); - - Long id = entity.getId(); - if (id != null) { - stmt.bindLong(1, id); - } - stmt.bindLong(2, entity.getStep()); - stmt.bindLong(3, entity.getHAngle()); - stmt.bindLong(4, entity.getVAngle()); - } - - @Override - public Long readKey(Cursor cursor, int offset) { - return cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0); - } - - @Override - public CameraPointBean readEntity(Cursor cursor, int offset) { - CameraPointBean entity = new CameraPointBean( // - cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id - cursor.getInt(offset + 1), // step - cursor.getInt(offset + 2), // hAngle - cursor.getInt(offset + 3) // vAngle - ); - return entity; - } - - @Override - public void readEntity(Cursor cursor, CameraPointBean entity, int offset) { - entity.setId(cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0)); - entity.setStep(cursor.getInt(offset + 1)); - entity.setHAngle(cursor.getInt(offset + 2)); - entity.setVAngle(cursor.getInt(offset + 3)); - } - - @Override - protected final Long updateKeyAfterInsert(CameraPointBean entity, long rowId) { - entity.setId(rowId); - return rowId; - } - - @Override - public Long getKey(CameraPointBean entity) { - if (entity != null) { - return entity.getId(); - } else { - return null; - } - } - - @Override - public boolean hasKey(CameraPointBean entity) { - return entity.getId() != null; - } - - @Override - protected final boolean isEntityUpdateable() { - return true; - } - -} diff --git a/app/src/main/java/com/casic/endoscope/greendao/DaoMaster.java b/app/src/main/java/com/casic/endoscope/greendao/DaoMaster.java index 5d4fa30..a455fd0 100644 --- a/app/src/main/java/com/casic/endoscope/greendao/DaoMaster.java +++ b/app/src/main/java/com/casic/endoscope/greendao/DaoMaster.java @@ -13,25 +13,20 @@ // THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. - /** * Master of DAO (schema version 1): knows all DAOs. */ public class DaoMaster extends AbstractDaoMaster { public static final int SCHEMA_VERSION = 1; - /** - * Creates underlying database table using DAOs. - */ + /** Creates underlying database table using DAOs. */ public static void createAllTables(Database db, boolean ifNotExists) { - CameraPointBeanDao.createTable(db, ifNotExists); + GasValueBeanDao.createTable(db, ifNotExists); } - /** - * Drops underlying database table using DAOs. - */ + /** Drops underlying database table using DAOs. */ public static void dropAllTables(Database db, boolean ifExists) { - CameraPointBeanDao.dropTable(db, ifExists); + GasValueBeanDao.dropTable(db, ifExists); } /** @@ -50,7 +45,7 @@ public DaoMaster(Database db) { super(db, SCHEMA_VERSION); - registerDaoClass(CameraPointBeanDao.class); + registerDaoClass(GasValueBeanDao.class); } public DaoSession newSession() { @@ -80,9 +75,7 @@ } } - /** - * WARNING: Drops all table on Upgrade! Use only during development. - */ + /** WARNING: Drops all table on Upgrade! Use only during development. */ public static class DevOpenHelper extends OpenHelper { public DevOpenHelper(Context context, String name) { super(context, name); diff --git a/app/src/main/java/com/casic/endoscope/greendao/DaoSession.java b/app/src/main/java/com/casic/endoscope/greendao/DaoSession.java index ed2f9c0..259243d 100644 --- a/app/src/main/java/com/casic/endoscope/greendao/DaoSession.java +++ b/app/src/main/java/com/casic/endoscope/greendao/DaoSession.java @@ -1,6 +1,6 @@ package com.casic.endoscope.greendao; -import com.casic.endoscope.bean.CameraPointBean; +import com.casic.endoscope.bean.GasValueBean; import org.greenrobot.greendao.AbstractDao; import org.greenrobot.greendao.AbstractDaoSession; @@ -19,28 +19,28 @@ */ public class DaoSession extends AbstractDaoSession { - private final DaoConfig cameraPointBeanDaoConfig; + private final DaoConfig gasValueBeanDaoConfig; - private final CameraPointBeanDao cameraPointBeanDao; + private final GasValueBeanDao gasValueBeanDao; public DaoSession(Database db, IdentityScopeType type, Map>, DaoConfig> daoConfigMap) { super(db); - cameraPointBeanDaoConfig = daoConfigMap.get(CameraPointBeanDao.class).clone(); - cameraPointBeanDaoConfig.initIdentityScope(type); + gasValueBeanDaoConfig = daoConfigMap.get(GasValueBeanDao.class).clone(); + gasValueBeanDaoConfig.initIdentityScope(type); - cameraPointBeanDao = new CameraPointBeanDao(cameraPointBeanDaoConfig, this); + gasValueBeanDao = new GasValueBeanDao(gasValueBeanDaoConfig, this); - registerDao(CameraPointBean.class, cameraPointBeanDao); + registerDao(GasValueBean.class, gasValueBeanDao); } public void clear() { - cameraPointBeanDaoConfig.clearIdentityScope(); + gasValueBeanDaoConfig.clearIdentityScope(); } - public CameraPointBeanDao getCameraPointBeanDao() { - return cameraPointBeanDao; + public GasValueBeanDao getGasValueBeanDao() { + return gasValueBeanDao; } } diff --git a/app/build.gradle b/app/build.gradle index c2a2c53..64d4d0c 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -72,7 +72,7 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5.4' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.8' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.cardview:cardview:1.0.0' diff --git a/app/src/main/java/com/casic/endoscope/adapter/CameraPointAdapter.kt b/app/src/main/java/com/casic/endoscope/adapter/CameraPointAdapter.kt deleted file mode 100644 index fe404b2..0000000 --- a/app/src/main/java/com/casic/endoscope/adapter/CameraPointAdapter.kt +++ /dev/null @@ -1,78 +0,0 @@ -package com.casic.endoscope.adapter - -import android.annotation.SuppressLint -import android.content.Context -import android.graphics.Color -import android.view.LayoutInflater -import android.view.ViewGroup -import android.widget.LinearLayout -import androidx.recyclerview.widget.RecyclerView -import com.casic.endoscope.R -import com.casic.endoscope.bean.CameraPointBean -import com.pengxh.kt.lite.adapter.ViewHolder -import com.pengxh.kt.lite.extensions.convertColor - -class CameraPointAdapter( - private val context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var multipleSelected = mutableSetOf() - private var selectedItems = ArrayList() - - override fun getItemCount(): Int = dataRows.size - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { - return ViewHolder( - LayoutInflater.from(context).inflate(R.layout.item_point_list_rv, parent, false) - ) - } - - @SuppressLint("NotifyDataSetChanged") - fun setRefreshData(dataRows: MutableList) { - this.dataRows.clear() - this.dataRows.addAll(dataRows) - notifyDataSetChanged() - multipleSelected.clear() - selectedItems.clear() - } - - override fun onBindViewHolder(holder: ViewHolder, position: Int) { - val item = dataRows[position] - holder.setText(R.id.stepNameView, "步骤 ${item.step}") - .setText(R.id.hAngleView, "水平角度 ${item.hAngle}°") - .setText(R.id.vAngleView, "垂直角度 ${item.vAngle}°") - - val linearLayout = holder.itemView.findViewById(R.id.rootView) - //item背景色 - if (position % 2 == 0) { - linearLayout.setBackgroundColor(Color.parseColor("#C8E3F4")) - } else { - linearLayout.setBackgroundColor(R.color.backgroundColor.convertColor(context)) - } - - holder.itemView.isSelected = multipleSelected.contains(position) - holder.itemView.setOnClickListener { - if (multipleSelected.contains(position)) { - multipleSelected.remove(position) - selectedItems.remove(dataRows[position]) - holder.itemView.isSelected = false - } else { - multipleSelected.add(position) - selectedItems.add(dataRows[position]) - holder.itemView.isSelected = true - } - - itemCheckedListener?.onItemChecked(position, selectedItems) - } - } - - private var itemCheckedListener: OnItemCheckedListener? = null - - interface OnItemCheckedListener { - fun onItemChecked(position: Int, items: ArrayList) - } - - fun setOnItemCheckedListener(listener: OnItemCheckedListener) { - itemCheckedListener = listener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/endoscope/bean/CameraPointBean.java b/app/src/main/java/com/casic/endoscope/bean/CameraPointBean.java deleted file mode 100644 index 3a20d82..0000000 --- a/app/src/main/java/com/casic/endoscope/bean/CameraPointBean.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.casic.endoscope.bean; - -import org.greenrobot.greendao.annotation.Entity; -import org.greenrobot.greendao.annotation.Generated; -import org.greenrobot.greendao.annotation.Id; - -/** - * 必须是java,不能是kt - */ -@Entity -public class CameraPointBean { - - @Id(autoincrement = true) - private Long id;//主键自增 - - private int step;//步骤序号 - private int hAngle;//水平角度 - private int vAngle;//垂直角度 - - @Generated(hash = 1436018650) - public CameraPointBean(Long id, int step, int hAngle, int vAngle) { - this.id = id; - this.step = step; - this.hAngle = hAngle; - this.vAngle = vAngle; - } - - @Generated(hash = 44086073) - public CameraPointBean() { - } - - public Long getId() { - return this.id; - } - - public void setId(Long id) { - this.id = id; - } - - public int getStep() { - return this.step; - } - - public void setStep(int step) { - this.step = step; - } - - public int getHAngle() { - return this.hAngle; - } - - public void setHAngle(int hAngle) { - this.hAngle = hAngle; - } - - public int getVAngle() { - return this.vAngle; - } - - public void setVAngle(int vAngle) { - this.vAngle = vAngle; - } -} diff --git a/app/src/main/java/com/casic/endoscope/bean/GasValueBean.java b/app/src/main/java/com/casic/endoscope/bean/GasValueBean.java new file mode 100644 index 0000000..6537b9a --- /dev/null +++ b/app/src/main/java/com/casic/endoscope/bean/GasValueBean.java @@ -0,0 +1,63 @@ +package com.casic.endoscope.bean; + +import org.greenrobot.greendao.annotation.Entity; +import org.greenrobot.greendao.annotation.Generated; +import org.greenrobot.greendao.annotation.Id; + +/** + * 必须是java,不能是kt + * 甲烷浓度表结构 + */ +@Entity +public class GasValueBean { + @Id(autoincrement = true) + private Long id;//主键自增 + + private String time;//采集浓度的时间 + private int value;//采集的浓度 + private String location;//浓度采集点位置 + + @Generated(hash = 663679791) + public GasValueBean(Long id, String time, int value, String location) { + this.id = id; + this.time = time; + this.value = value; + this.location = location; + } + + @Generated(hash = 291409217) + public GasValueBean() { + } + + public Long getId() { + return this.id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getTime() { + return this.time; + } + + public void setTime(String time) { + this.time = time; + } + + public int getValue() { + return this.value; + } + + public void setValue(int value) { + this.value = value; + } + + public String getLocation() { + return this.location; + } + + public void setLocation(String location) { + this.location = location; + } +} diff --git a/app/src/main/java/com/casic/endoscope/greendao/CameraPointBeanDao.java b/app/src/main/java/com/casic/endoscope/greendao/CameraPointBeanDao.java deleted file mode 100644 index 11bc932..0000000 --- a/app/src/main/java/com/casic/endoscope/greendao/CameraPointBeanDao.java +++ /dev/null @@ -1,138 +0,0 @@ -package com.casic.endoscope.greendao; - -import android.database.Cursor; -import android.database.sqlite.SQLiteStatement; - -import com.casic.endoscope.bean.CameraPointBean; - -import org.greenrobot.greendao.AbstractDao; -import org.greenrobot.greendao.Property; -import org.greenrobot.greendao.database.Database; -import org.greenrobot.greendao.database.DatabaseStatement; -import org.greenrobot.greendao.internal.DaoConfig; - -// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. - -/** - * DAO for table "CAMERA_POINT_BEAN". - */ -public class CameraPointBeanDao extends AbstractDao { - - public static final String TABLENAME = "CAMERA_POINT_BEAN"; - - /** - * Properties of entity CameraPointBean.
- * Can be used for QueryBuilder and for referencing column names. - */ - public static class Properties { - public final static Property Id = new Property(0, Long.class, "id", true, "_id"); - public final static Property Step = new Property(1, int.class, "step", false, "STEP"); - public final static Property HAngle = new Property(2, int.class, "hAngle", false, "H_ANGLE"); - public final static Property VAngle = new Property(3, int.class, "vAngle", false, "V_ANGLE"); - } - - - public CameraPointBeanDao(DaoConfig config) { - super(config); - } - - public CameraPointBeanDao(DaoConfig config, DaoSession daoSession) { - super(config, daoSession); - } - - /** - * Creates the underlying database table. - */ - public static void createTable(Database db, boolean ifNotExists) { - String constraint = ifNotExists ? "IF NOT EXISTS " : ""; - db.execSQL("CREATE TABLE " + constraint + "\"CAMERA_POINT_BEAN\" (" + // - "\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id - "\"STEP\" INTEGER NOT NULL ," + // 1: step - "\"H_ANGLE\" INTEGER NOT NULL ," + // 2: hAngle - "\"V_ANGLE\" INTEGER NOT NULL );"); // 3: vAngle - } - - /** - * Drops the underlying database table. - */ - public static void dropTable(Database db, boolean ifExists) { - String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"CAMERA_POINT_BEAN\""; - db.execSQL(sql); - } - - @Override - protected final void bindValues(DatabaseStatement stmt, CameraPointBean entity) { - stmt.clearBindings(); - - Long id = entity.getId(); - if (id != null) { - stmt.bindLong(1, id); - } - stmt.bindLong(2, entity.getStep()); - stmt.bindLong(3, entity.getHAngle()); - stmt.bindLong(4, entity.getVAngle()); - } - - @Override - protected final void bindValues(SQLiteStatement stmt, CameraPointBean entity) { - stmt.clearBindings(); - - Long id = entity.getId(); - if (id != null) { - stmt.bindLong(1, id); - } - stmt.bindLong(2, entity.getStep()); - stmt.bindLong(3, entity.getHAngle()); - stmt.bindLong(4, entity.getVAngle()); - } - - @Override - public Long readKey(Cursor cursor, int offset) { - return cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0); - } - - @Override - public CameraPointBean readEntity(Cursor cursor, int offset) { - CameraPointBean entity = new CameraPointBean( // - cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id - cursor.getInt(offset + 1), // step - cursor.getInt(offset + 2), // hAngle - cursor.getInt(offset + 3) // vAngle - ); - return entity; - } - - @Override - public void readEntity(Cursor cursor, CameraPointBean entity, int offset) { - entity.setId(cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0)); - entity.setStep(cursor.getInt(offset + 1)); - entity.setHAngle(cursor.getInt(offset + 2)); - entity.setVAngle(cursor.getInt(offset + 3)); - } - - @Override - protected final Long updateKeyAfterInsert(CameraPointBean entity, long rowId) { - entity.setId(rowId); - return rowId; - } - - @Override - public Long getKey(CameraPointBean entity) { - if (entity != null) { - return entity.getId(); - } else { - return null; - } - } - - @Override - public boolean hasKey(CameraPointBean entity) { - return entity.getId() != null; - } - - @Override - protected final boolean isEntityUpdateable() { - return true; - } - -} diff --git a/app/src/main/java/com/casic/endoscope/greendao/DaoMaster.java b/app/src/main/java/com/casic/endoscope/greendao/DaoMaster.java index 5d4fa30..a455fd0 100644 --- a/app/src/main/java/com/casic/endoscope/greendao/DaoMaster.java +++ b/app/src/main/java/com/casic/endoscope/greendao/DaoMaster.java @@ -13,25 +13,20 @@ // THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. - /** * Master of DAO (schema version 1): knows all DAOs. */ public class DaoMaster extends AbstractDaoMaster { public static final int SCHEMA_VERSION = 1; - /** - * Creates underlying database table using DAOs. - */ + /** Creates underlying database table using DAOs. */ public static void createAllTables(Database db, boolean ifNotExists) { - CameraPointBeanDao.createTable(db, ifNotExists); + GasValueBeanDao.createTable(db, ifNotExists); } - /** - * Drops underlying database table using DAOs. - */ + /** Drops underlying database table using DAOs. */ public static void dropAllTables(Database db, boolean ifExists) { - CameraPointBeanDao.dropTable(db, ifExists); + GasValueBeanDao.dropTable(db, ifExists); } /** @@ -50,7 +45,7 @@ public DaoMaster(Database db) { super(db, SCHEMA_VERSION); - registerDaoClass(CameraPointBeanDao.class); + registerDaoClass(GasValueBeanDao.class); } public DaoSession newSession() { @@ -80,9 +75,7 @@ } } - /** - * WARNING: Drops all table on Upgrade! Use only during development. - */ + /** WARNING: Drops all table on Upgrade! Use only during development. */ public static class DevOpenHelper extends OpenHelper { public DevOpenHelper(Context context, String name) { super(context, name); diff --git a/app/src/main/java/com/casic/endoscope/greendao/DaoSession.java b/app/src/main/java/com/casic/endoscope/greendao/DaoSession.java index ed2f9c0..259243d 100644 --- a/app/src/main/java/com/casic/endoscope/greendao/DaoSession.java +++ b/app/src/main/java/com/casic/endoscope/greendao/DaoSession.java @@ -1,6 +1,6 @@ package com.casic.endoscope.greendao; -import com.casic.endoscope.bean.CameraPointBean; +import com.casic.endoscope.bean.GasValueBean; import org.greenrobot.greendao.AbstractDao; import org.greenrobot.greendao.AbstractDaoSession; @@ -19,28 +19,28 @@ */ public class DaoSession extends AbstractDaoSession { - private final DaoConfig cameraPointBeanDaoConfig; + private final DaoConfig gasValueBeanDaoConfig; - private final CameraPointBeanDao cameraPointBeanDao; + private final GasValueBeanDao gasValueBeanDao; public DaoSession(Database db, IdentityScopeType type, Map>, DaoConfig> daoConfigMap) { super(db); - cameraPointBeanDaoConfig = daoConfigMap.get(CameraPointBeanDao.class).clone(); - cameraPointBeanDaoConfig.initIdentityScope(type); + gasValueBeanDaoConfig = daoConfigMap.get(GasValueBeanDao.class).clone(); + gasValueBeanDaoConfig.initIdentityScope(type); - cameraPointBeanDao = new CameraPointBeanDao(cameraPointBeanDaoConfig, this); + gasValueBeanDao = new GasValueBeanDao(gasValueBeanDaoConfig, this); - registerDao(CameraPointBean.class, cameraPointBeanDao); + registerDao(GasValueBean.class, gasValueBeanDao); } public void clear() { - cameraPointBeanDaoConfig.clearIdentityScope(); + gasValueBeanDaoConfig.clearIdentityScope(); } - public CameraPointBeanDao getCameraPointBeanDao() { - return cameraPointBeanDao; + public GasValueBeanDao getGasValueBeanDao() { + return gasValueBeanDao; } } diff --git a/app/src/main/java/com/casic/endoscope/greendao/GasValueBeanDao.java b/app/src/main/java/com/casic/endoscope/greendao/GasValueBeanDao.java new file mode 100644 index 0000000..5149375 --- /dev/null +++ b/app/src/main/java/com/casic/endoscope/greendao/GasValueBeanDao.java @@ -0,0 +1,149 @@ +package com.casic.endoscope.greendao; + +import android.database.Cursor; +import android.database.sqlite.SQLiteStatement; + +import com.casic.endoscope.bean.GasValueBean; + +import org.greenrobot.greendao.AbstractDao; +import org.greenrobot.greendao.Property; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.database.DatabaseStatement; +import org.greenrobot.greendao.internal.DaoConfig; + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. +/** + * DAO for table "GAS_VALUE_BEAN". +*/ +public class GasValueBeanDao extends AbstractDao { + + public static final String TABLENAME = "GAS_VALUE_BEAN"; + + /** + * Properties of entity GasValueBean.
+ * Can be used for QueryBuilder and for referencing column names. + */ + public static class Properties { + public final static Property Id = new Property(0, Long.class, "id", true, "_id"); + public final static Property Time = new Property(1, String.class, "time", false, "TIME"); + public final static Property Value = new Property(2, int.class, "value", false, "VALUE"); + public final static Property Location = new Property(3, String.class, "location", false, "LOCATION"); + } + + + public GasValueBeanDao(DaoConfig config) { + super(config); + } + + public GasValueBeanDao(DaoConfig config, DaoSession daoSession) { + super(config, daoSession); + } + + /** Creates the underlying database table. */ + public static void createTable(Database db, boolean ifNotExists) { + String constraint = ifNotExists? "IF NOT EXISTS ": ""; + db.execSQL("CREATE TABLE " + constraint + "\"GAS_VALUE_BEAN\" (" + // + "\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id + "\"TIME\" TEXT," + // 1: time + "\"VALUE\" INTEGER NOT NULL ," + // 2: value + "\"LOCATION\" TEXT);"); // 3: location + } + + /** Drops the underlying database table. */ + public static void dropTable(Database db, boolean ifExists) { + String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"GAS_VALUE_BEAN\""; + db.execSQL(sql); + } + + @Override + protected final void bindValues(DatabaseStatement stmt, GasValueBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String time = entity.getTime(); + if (time != null) { + stmt.bindString(2, time); + } + stmt.bindLong(3, entity.getValue()); + + String location = entity.getLocation(); + if (location != null) { + stmt.bindString(4, location); + } + } + + @Override + protected final void bindValues(SQLiteStatement stmt, GasValueBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String time = entity.getTime(); + if (time != null) { + stmt.bindString(2, time); + } + stmt.bindLong(3, entity.getValue()); + + String location = entity.getLocation(); + if (location != null) { + stmt.bindString(4, location); + } + } + + @Override + public Long readKey(Cursor cursor, int offset) { + return cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0); + } + + @Override + public GasValueBean readEntity(Cursor cursor, int offset) { + GasValueBean entity = new GasValueBean( // + cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id + cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // time + cursor.getInt(offset + 2), // value + cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3) // location + ); + return entity; + } + + @Override + public void readEntity(Cursor cursor, GasValueBean entity, int offset) { + entity.setId(cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0)); + entity.setTime(cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1)); + entity.setValue(cursor.getInt(offset + 2)); + entity.setLocation(cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3)); + } + + @Override + protected final Long updateKeyAfterInsert(GasValueBean entity, long rowId) { + entity.setId(rowId); + return rowId; + } + + @Override + public Long getKey(GasValueBean entity) { + if(entity != null) { + return entity.getId(); + } else { + return null; + } + } + + @Override + public boolean hasKey(GasValueBean entity) { + return entity.getId() != null; + } + + @Override + protected final boolean isEntityUpdateable() { + return true; + } + +} diff --git a/app/build.gradle b/app/build.gradle index c2a2c53..64d4d0c 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -72,7 +72,7 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5.4' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.8' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.cardview:cardview:1.0.0' diff --git a/app/src/main/java/com/casic/endoscope/adapter/CameraPointAdapter.kt b/app/src/main/java/com/casic/endoscope/adapter/CameraPointAdapter.kt deleted file mode 100644 index fe404b2..0000000 --- a/app/src/main/java/com/casic/endoscope/adapter/CameraPointAdapter.kt +++ /dev/null @@ -1,78 +0,0 @@ -package com.casic.endoscope.adapter - -import android.annotation.SuppressLint -import android.content.Context -import android.graphics.Color -import android.view.LayoutInflater -import android.view.ViewGroup -import android.widget.LinearLayout -import androidx.recyclerview.widget.RecyclerView -import com.casic.endoscope.R -import com.casic.endoscope.bean.CameraPointBean -import com.pengxh.kt.lite.adapter.ViewHolder -import com.pengxh.kt.lite.extensions.convertColor - -class CameraPointAdapter( - private val context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var multipleSelected = mutableSetOf() - private var selectedItems = ArrayList() - - override fun getItemCount(): Int = dataRows.size - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { - return ViewHolder( - LayoutInflater.from(context).inflate(R.layout.item_point_list_rv, parent, false) - ) - } - - @SuppressLint("NotifyDataSetChanged") - fun setRefreshData(dataRows: MutableList) { - this.dataRows.clear() - this.dataRows.addAll(dataRows) - notifyDataSetChanged() - multipleSelected.clear() - selectedItems.clear() - } - - override fun onBindViewHolder(holder: ViewHolder, position: Int) { - val item = dataRows[position] - holder.setText(R.id.stepNameView, "步骤 ${item.step}") - .setText(R.id.hAngleView, "水平角度 ${item.hAngle}°") - .setText(R.id.vAngleView, "垂直角度 ${item.vAngle}°") - - val linearLayout = holder.itemView.findViewById(R.id.rootView) - //item背景色 - if (position % 2 == 0) { - linearLayout.setBackgroundColor(Color.parseColor("#C8E3F4")) - } else { - linearLayout.setBackgroundColor(R.color.backgroundColor.convertColor(context)) - } - - holder.itemView.isSelected = multipleSelected.contains(position) - holder.itemView.setOnClickListener { - if (multipleSelected.contains(position)) { - multipleSelected.remove(position) - selectedItems.remove(dataRows[position]) - holder.itemView.isSelected = false - } else { - multipleSelected.add(position) - selectedItems.add(dataRows[position]) - holder.itemView.isSelected = true - } - - itemCheckedListener?.onItemChecked(position, selectedItems) - } - } - - private var itemCheckedListener: OnItemCheckedListener? = null - - interface OnItemCheckedListener { - fun onItemChecked(position: Int, items: ArrayList) - } - - fun setOnItemCheckedListener(listener: OnItemCheckedListener) { - itemCheckedListener = listener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/endoscope/bean/CameraPointBean.java b/app/src/main/java/com/casic/endoscope/bean/CameraPointBean.java deleted file mode 100644 index 3a20d82..0000000 --- a/app/src/main/java/com/casic/endoscope/bean/CameraPointBean.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.casic.endoscope.bean; - -import org.greenrobot.greendao.annotation.Entity; -import org.greenrobot.greendao.annotation.Generated; -import org.greenrobot.greendao.annotation.Id; - -/** - * 必须是java,不能是kt - */ -@Entity -public class CameraPointBean { - - @Id(autoincrement = true) - private Long id;//主键自增 - - private int step;//步骤序号 - private int hAngle;//水平角度 - private int vAngle;//垂直角度 - - @Generated(hash = 1436018650) - public CameraPointBean(Long id, int step, int hAngle, int vAngle) { - this.id = id; - this.step = step; - this.hAngle = hAngle; - this.vAngle = vAngle; - } - - @Generated(hash = 44086073) - public CameraPointBean() { - } - - public Long getId() { - return this.id; - } - - public void setId(Long id) { - this.id = id; - } - - public int getStep() { - return this.step; - } - - public void setStep(int step) { - this.step = step; - } - - public int getHAngle() { - return this.hAngle; - } - - public void setHAngle(int hAngle) { - this.hAngle = hAngle; - } - - public int getVAngle() { - return this.vAngle; - } - - public void setVAngle(int vAngle) { - this.vAngle = vAngle; - } -} diff --git a/app/src/main/java/com/casic/endoscope/bean/GasValueBean.java b/app/src/main/java/com/casic/endoscope/bean/GasValueBean.java new file mode 100644 index 0000000..6537b9a --- /dev/null +++ b/app/src/main/java/com/casic/endoscope/bean/GasValueBean.java @@ -0,0 +1,63 @@ +package com.casic.endoscope.bean; + +import org.greenrobot.greendao.annotation.Entity; +import org.greenrobot.greendao.annotation.Generated; +import org.greenrobot.greendao.annotation.Id; + +/** + * 必须是java,不能是kt + * 甲烷浓度表结构 + */ +@Entity +public class GasValueBean { + @Id(autoincrement = true) + private Long id;//主键自增 + + private String time;//采集浓度的时间 + private int value;//采集的浓度 + private String location;//浓度采集点位置 + + @Generated(hash = 663679791) + public GasValueBean(Long id, String time, int value, String location) { + this.id = id; + this.time = time; + this.value = value; + this.location = location; + } + + @Generated(hash = 291409217) + public GasValueBean() { + } + + public Long getId() { + return this.id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getTime() { + return this.time; + } + + public void setTime(String time) { + this.time = time; + } + + public int getValue() { + return this.value; + } + + public void setValue(int value) { + this.value = value; + } + + public String getLocation() { + return this.location; + } + + public void setLocation(String location) { + this.location = location; + } +} diff --git a/app/src/main/java/com/casic/endoscope/greendao/CameraPointBeanDao.java b/app/src/main/java/com/casic/endoscope/greendao/CameraPointBeanDao.java deleted file mode 100644 index 11bc932..0000000 --- a/app/src/main/java/com/casic/endoscope/greendao/CameraPointBeanDao.java +++ /dev/null @@ -1,138 +0,0 @@ -package com.casic.endoscope.greendao; - -import android.database.Cursor; -import android.database.sqlite.SQLiteStatement; - -import com.casic.endoscope.bean.CameraPointBean; - -import org.greenrobot.greendao.AbstractDao; -import org.greenrobot.greendao.Property; -import org.greenrobot.greendao.database.Database; -import org.greenrobot.greendao.database.DatabaseStatement; -import org.greenrobot.greendao.internal.DaoConfig; - -// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. - -/** - * DAO for table "CAMERA_POINT_BEAN". - */ -public class CameraPointBeanDao extends AbstractDao { - - public static final String TABLENAME = "CAMERA_POINT_BEAN"; - - /** - * Properties of entity CameraPointBean.
- * Can be used for QueryBuilder and for referencing column names. - */ - public static class Properties { - public final static Property Id = new Property(0, Long.class, "id", true, "_id"); - public final static Property Step = new Property(1, int.class, "step", false, "STEP"); - public final static Property HAngle = new Property(2, int.class, "hAngle", false, "H_ANGLE"); - public final static Property VAngle = new Property(3, int.class, "vAngle", false, "V_ANGLE"); - } - - - public CameraPointBeanDao(DaoConfig config) { - super(config); - } - - public CameraPointBeanDao(DaoConfig config, DaoSession daoSession) { - super(config, daoSession); - } - - /** - * Creates the underlying database table. - */ - public static void createTable(Database db, boolean ifNotExists) { - String constraint = ifNotExists ? "IF NOT EXISTS " : ""; - db.execSQL("CREATE TABLE " + constraint + "\"CAMERA_POINT_BEAN\" (" + // - "\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id - "\"STEP\" INTEGER NOT NULL ," + // 1: step - "\"H_ANGLE\" INTEGER NOT NULL ," + // 2: hAngle - "\"V_ANGLE\" INTEGER NOT NULL );"); // 3: vAngle - } - - /** - * Drops the underlying database table. - */ - public static void dropTable(Database db, boolean ifExists) { - String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"CAMERA_POINT_BEAN\""; - db.execSQL(sql); - } - - @Override - protected final void bindValues(DatabaseStatement stmt, CameraPointBean entity) { - stmt.clearBindings(); - - Long id = entity.getId(); - if (id != null) { - stmt.bindLong(1, id); - } - stmt.bindLong(2, entity.getStep()); - stmt.bindLong(3, entity.getHAngle()); - stmt.bindLong(4, entity.getVAngle()); - } - - @Override - protected final void bindValues(SQLiteStatement stmt, CameraPointBean entity) { - stmt.clearBindings(); - - Long id = entity.getId(); - if (id != null) { - stmt.bindLong(1, id); - } - stmt.bindLong(2, entity.getStep()); - stmt.bindLong(3, entity.getHAngle()); - stmt.bindLong(4, entity.getVAngle()); - } - - @Override - public Long readKey(Cursor cursor, int offset) { - return cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0); - } - - @Override - public CameraPointBean readEntity(Cursor cursor, int offset) { - CameraPointBean entity = new CameraPointBean( // - cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id - cursor.getInt(offset + 1), // step - cursor.getInt(offset + 2), // hAngle - cursor.getInt(offset + 3) // vAngle - ); - return entity; - } - - @Override - public void readEntity(Cursor cursor, CameraPointBean entity, int offset) { - entity.setId(cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0)); - entity.setStep(cursor.getInt(offset + 1)); - entity.setHAngle(cursor.getInt(offset + 2)); - entity.setVAngle(cursor.getInt(offset + 3)); - } - - @Override - protected final Long updateKeyAfterInsert(CameraPointBean entity, long rowId) { - entity.setId(rowId); - return rowId; - } - - @Override - public Long getKey(CameraPointBean entity) { - if (entity != null) { - return entity.getId(); - } else { - return null; - } - } - - @Override - public boolean hasKey(CameraPointBean entity) { - return entity.getId() != null; - } - - @Override - protected final boolean isEntityUpdateable() { - return true; - } - -} diff --git a/app/src/main/java/com/casic/endoscope/greendao/DaoMaster.java b/app/src/main/java/com/casic/endoscope/greendao/DaoMaster.java index 5d4fa30..a455fd0 100644 --- a/app/src/main/java/com/casic/endoscope/greendao/DaoMaster.java +++ b/app/src/main/java/com/casic/endoscope/greendao/DaoMaster.java @@ -13,25 +13,20 @@ // THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. - /** * Master of DAO (schema version 1): knows all DAOs. */ public class DaoMaster extends AbstractDaoMaster { public static final int SCHEMA_VERSION = 1; - /** - * Creates underlying database table using DAOs. - */ + /** Creates underlying database table using DAOs. */ public static void createAllTables(Database db, boolean ifNotExists) { - CameraPointBeanDao.createTable(db, ifNotExists); + GasValueBeanDao.createTable(db, ifNotExists); } - /** - * Drops underlying database table using DAOs. - */ + /** Drops underlying database table using DAOs. */ public static void dropAllTables(Database db, boolean ifExists) { - CameraPointBeanDao.dropTable(db, ifExists); + GasValueBeanDao.dropTable(db, ifExists); } /** @@ -50,7 +45,7 @@ public DaoMaster(Database db) { super(db, SCHEMA_VERSION); - registerDaoClass(CameraPointBeanDao.class); + registerDaoClass(GasValueBeanDao.class); } public DaoSession newSession() { @@ -80,9 +75,7 @@ } } - /** - * WARNING: Drops all table on Upgrade! Use only during development. - */ + /** WARNING: Drops all table on Upgrade! Use only during development. */ public static class DevOpenHelper extends OpenHelper { public DevOpenHelper(Context context, String name) { super(context, name); diff --git a/app/src/main/java/com/casic/endoscope/greendao/DaoSession.java b/app/src/main/java/com/casic/endoscope/greendao/DaoSession.java index ed2f9c0..259243d 100644 --- a/app/src/main/java/com/casic/endoscope/greendao/DaoSession.java +++ b/app/src/main/java/com/casic/endoscope/greendao/DaoSession.java @@ -1,6 +1,6 @@ package com.casic.endoscope.greendao; -import com.casic.endoscope.bean.CameraPointBean; +import com.casic.endoscope.bean.GasValueBean; import org.greenrobot.greendao.AbstractDao; import org.greenrobot.greendao.AbstractDaoSession; @@ -19,28 +19,28 @@ */ public class DaoSession extends AbstractDaoSession { - private final DaoConfig cameraPointBeanDaoConfig; + private final DaoConfig gasValueBeanDaoConfig; - private final CameraPointBeanDao cameraPointBeanDao; + private final GasValueBeanDao gasValueBeanDao; public DaoSession(Database db, IdentityScopeType type, Map>, DaoConfig> daoConfigMap) { super(db); - cameraPointBeanDaoConfig = daoConfigMap.get(CameraPointBeanDao.class).clone(); - cameraPointBeanDaoConfig.initIdentityScope(type); + gasValueBeanDaoConfig = daoConfigMap.get(GasValueBeanDao.class).clone(); + gasValueBeanDaoConfig.initIdentityScope(type); - cameraPointBeanDao = new CameraPointBeanDao(cameraPointBeanDaoConfig, this); + gasValueBeanDao = new GasValueBeanDao(gasValueBeanDaoConfig, this); - registerDao(CameraPointBean.class, cameraPointBeanDao); + registerDao(GasValueBean.class, gasValueBeanDao); } public void clear() { - cameraPointBeanDaoConfig.clearIdentityScope(); + gasValueBeanDaoConfig.clearIdentityScope(); } - public CameraPointBeanDao getCameraPointBeanDao() { - return cameraPointBeanDao; + public GasValueBeanDao getGasValueBeanDao() { + return gasValueBeanDao; } } diff --git a/app/src/main/java/com/casic/endoscope/greendao/GasValueBeanDao.java b/app/src/main/java/com/casic/endoscope/greendao/GasValueBeanDao.java new file mode 100644 index 0000000..5149375 --- /dev/null +++ b/app/src/main/java/com/casic/endoscope/greendao/GasValueBeanDao.java @@ -0,0 +1,149 @@ +package com.casic.endoscope.greendao; + +import android.database.Cursor; +import android.database.sqlite.SQLiteStatement; + +import com.casic.endoscope.bean.GasValueBean; + +import org.greenrobot.greendao.AbstractDao; +import org.greenrobot.greendao.Property; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.database.DatabaseStatement; +import org.greenrobot.greendao.internal.DaoConfig; + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. +/** + * DAO for table "GAS_VALUE_BEAN". +*/ +public class GasValueBeanDao extends AbstractDao { + + public static final String TABLENAME = "GAS_VALUE_BEAN"; + + /** + * Properties of entity GasValueBean.
+ * Can be used for QueryBuilder and for referencing column names. + */ + public static class Properties { + public final static Property Id = new Property(0, Long.class, "id", true, "_id"); + public final static Property Time = new Property(1, String.class, "time", false, "TIME"); + public final static Property Value = new Property(2, int.class, "value", false, "VALUE"); + public final static Property Location = new Property(3, String.class, "location", false, "LOCATION"); + } + + + public GasValueBeanDao(DaoConfig config) { + super(config); + } + + public GasValueBeanDao(DaoConfig config, DaoSession daoSession) { + super(config, daoSession); + } + + /** Creates the underlying database table. */ + public static void createTable(Database db, boolean ifNotExists) { + String constraint = ifNotExists? "IF NOT EXISTS ": ""; + db.execSQL("CREATE TABLE " + constraint + "\"GAS_VALUE_BEAN\" (" + // + "\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id + "\"TIME\" TEXT," + // 1: time + "\"VALUE\" INTEGER NOT NULL ," + // 2: value + "\"LOCATION\" TEXT);"); // 3: location + } + + /** Drops the underlying database table. */ + public static void dropTable(Database db, boolean ifExists) { + String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"GAS_VALUE_BEAN\""; + db.execSQL(sql); + } + + @Override + protected final void bindValues(DatabaseStatement stmt, GasValueBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String time = entity.getTime(); + if (time != null) { + stmt.bindString(2, time); + } + stmt.bindLong(3, entity.getValue()); + + String location = entity.getLocation(); + if (location != null) { + stmt.bindString(4, location); + } + } + + @Override + protected final void bindValues(SQLiteStatement stmt, GasValueBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String time = entity.getTime(); + if (time != null) { + stmt.bindString(2, time); + } + stmt.bindLong(3, entity.getValue()); + + String location = entity.getLocation(); + if (location != null) { + stmt.bindString(4, location); + } + } + + @Override + public Long readKey(Cursor cursor, int offset) { + return cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0); + } + + @Override + public GasValueBean readEntity(Cursor cursor, int offset) { + GasValueBean entity = new GasValueBean( // + cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id + cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // time + cursor.getInt(offset + 2), // value + cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3) // location + ); + return entity; + } + + @Override + public void readEntity(Cursor cursor, GasValueBean entity, int offset) { + entity.setId(cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0)); + entity.setTime(cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1)); + entity.setValue(cursor.getInt(offset + 2)); + entity.setLocation(cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3)); + } + + @Override + protected final Long updateKeyAfterInsert(GasValueBean entity, long rowId) { + entity.setId(rowId); + return rowId; + } + + @Override + public Long getKey(GasValueBean entity) { + if(entity != null) { + return entity.getId(); + } else { + return null; + } + } + + @Override + public boolean hasKey(GasValueBean entity) { + return entity.getId() != null; + } + + @Override + protected final boolean isEntityUpdateable() { + return true; + } + +} diff --git a/app/src/main/java/com/casic/endoscope/utils/DataBaseManager.kt b/app/src/main/java/com/casic/endoscope/utils/DataBaseManager.kt index a593a5b..c683db1 100644 --- a/app/src/main/java/com/casic/endoscope/utils/DataBaseManager.kt +++ b/app/src/main/java/com/casic/endoscope/utils/DataBaseManager.kt @@ -1,8 +1,6 @@ package com.casic.endoscope.utils import com.casic.endoscope.base.BaseApplication -import com.casic.endoscope.bean.CameraPointBean -import com.casic.endoscope.greendao.CameraPointBeanDao class DataBaseManager private constructor() { @@ -13,31 +11,5 @@ } } - private var cameraPointDao = BaseApplication.get().getDaoSession().cameraPointBeanDao - - fun cacheCameraPoint(step: Int, h: Int, v: Int) { - val bean = CameraPointBean() - bean.step = step - bean.hAngle = h - bean.vAngle = v - cameraPointDao.insert(bean) - } - - fun deleteCameraPoints(beans: MutableList) { - beans.forEach { - cameraPointDao.delete(it) - } - } - - fun deleteAllCameraPoint() { - cameraPointDao.deleteAll() - } - - fun queryCameraPointById(id: Long): CameraPointBean { - return cameraPointDao.queryBuilder() - .where(CameraPointBeanDao.Properties.Id.eq(id)) - .unique() - } - - fun loadAllCameraPoint(): MutableList = cameraPointDao.loadAll() + private var gasValueBeanDao = BaseApplication.get().getDaoSession().gasValueBeanDao } \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index c2a2c53..64d4d0c 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -72,7 +72,7 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5.4' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.8' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.cardview:cardview:1.0.0' diff --git a/app/src/main/java/com/casic/endoscope/adapter/CameraPointAdapter.kt b/app/src/main/java/com/casic/endoscope/adapter/CameraPointAdapter.kt deleted file mode 100644 index fe404b2..0000000 --- a/app/src/main/java/com/casic/endoscope/adapter/CameraPointAdapter.kt +++ /dev/null @@ -1,78 +0,0 @@ -package com.casic.endoscope.adapter - -import android.annotation.SuppressLint -import android.content.Context -import android.graphics.Color -import android.view.LayoutInflater -import android.view.ViewGroup -import android.widget.LinearLayout -import androidx.recyclerview.widget.RecyclerView -import com.casic.endoscope.R -import com.casic.endoscope.bean.CameraPointBean -import com.pengxh.kt.lite.adapter.ViewHolder -import com.pengxh.kt.lite.extensions.convertColor - -class CameraPointAdapter( - private val context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var multipleSelected = mutableSetOf() - private var selectedItems = ArrayList() - - override fun getItemCount(): Int = dataRows.size - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { - return ViewHolder( - LayoutInflater.from(context).inflate(R.layout.item_point_list_rv, parent, false) - ) - } - - @SuppressLint("NotifyDataSetChanged") - fun setRefreshData(dataRows: MutableList) { - this.dataRows.clear() - this.dataRows.addAll(dataRows) - notifyDataSetChanged() - multipleSelected.clear() - selectedItems.clear() - } - - override fun onBindViewHolder(holder: ViewHolder, position: Int) { - val item = dataRows[position] - holder.setText(R.id.stepNameView, "步骤 ${item.step}") - .setText(R.id.hAngleView, "水平角度 ${item.hAngle}°") - .setText(R.id.vAngleView, "垂直角度 ${item.vAngle}°") - - val linearLayout = holder.itemView.findViewById(R.id.rootView) - //item背景色 - if (position % 2 == 0) { - linearLayout.setBackgroundColor(Color.parseColor("#C8E3F4")) - } else { - linearLayout.setBackgroundColor(R.color.backgroundColor.convertColor(context)) - } - - holder.itemView.isSelected = multipleSelected.contains(position) - holder.itemView.setOnClickListener { - if (multipleSelected.contains(position)) { - multipleSelected.remove(position) - selectedItems.remove(dataRows[position]) - holder.itemView.isSelected = false - } else { - multipleSelected.add(position) - selectedItems.add(dataRows[position]) - holder.itemView.isSelected = true - } - - itemCheckedListener?.onItemChecked(position, selectedItems) - } - } - - private var itemCheckedListener: OnItemCheckedListener? = null - - interface OnItemCheckedListener { - fun onItemChecked(position: Int, items: ArrayList) - } - - fun setOnItemCheckedListener(listener: OnItemCheckedListener) { - itemCheckedListener = listener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/endoscope/bean/CameraPointBean.java b/app/src/main/java/com/casic/endoscope/bean/CameraPointBean.java deleted file mode 100644 index 3a20d82..0000000 --- a/app/src/main/java/com/casic/endoscope/bean/CameraPointBean.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.casic.endoscope.bean; - -import org.greenrobot.greendao.annotation.Entity; -import org.greenrobot.greendao.annotation.Generated; -import org.greenrobot.greendao.annotation.Id; - -/** - * 必须是java,不能是kt - */ -@Entity -public class CameraPointBean { - - @Id(autoincrement = true) - private Long id;//主键自增 - - private int step;//步骤序号 - private int hAngle;//水平角度 - private int vAngle;//垂直角度 - - @Generated(hash = 1436018650) - public CameraPointBean(Long id, int step, int hAngle, int vAngle) { - this.id = id; - this.step = step; - this.hAngle = hAngle; - this.vAngle = vAngle; - } - - @Generated(hash = 44086073) - public CameraPointBean() { - } - - public Long getId() { - return this.id; - } - - public void setId(Long id) { - this.id = id; - } - - public int getStep() { - return this.step; - } - - public void setStep(int step) { - this.step = step; - } - - public int getHAngle() { - return this.hAngle; - } - - public void setHAngle(int hAngle) { - this.hAngle = hAngle; - } - - public int getVAngle() { - return this.vAngle; - } - - public void setVAngle(int vAngle) { - this.vAngle = vAngle; - } -} diff --git a/app/src/main/java/com/casic/endoscope/bean/GasValueBean.java b/app/src/main/java/com/casic/endoscope/bean/GasValueBean.java new file mode 100644 index 0000000..6537b9a --- /dev/null +++ b/app/src/main/java/com/casic/endoscope/bean/GasValueBean.java @@ -0,0 +1,63 @@ +package com.casic.endoscope.bean; + +import org.greenrobot.greendao.annotation.Entity; +import org.greenrobot.greendao.annotation.Generated; +import org.greenrobot.greendao.annotation.Id; + +/** + * 必须是java,不能是kt + * 甲烷浓度表结构 + */ +@Entity +public class GasValueBean { + @Id(autoincrement = true) + private Long id;//主键自增 + + private String time;//采集浓度的时间 + private int value;//采集的浓度 + private String location;//浓度采集点位置 + + @Generated(hash = 663679791) + public GasValueBean(Long id, String time, int value, String location) { + this.id = id; + this.time = time; + this.value = value; + this.location = location; + } + + @Generated(hash = 291409217) + public GasValueBean() { + } + + public Long getId() { + return this.id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getTime() { + return this.time; + } + + public void setTime(String time) { + this.time = time; + } + + public int getValue() { + return this.value; + } + + public void setValue(int value) { + this.value = value; + } + + public String getLocation() { + return this.location; + } + + public void setLocation(String location) { + this.location = location; + } +} diff --git a/app/src/main/java/com/casic/endoscope/greendao/CameraPointBeanDao.java b/app/src/main/java/com/casic/endoscope/greendao/CameraPointBeanDao.java deleted file mode 100644 index 11bc932..0000000 --- a/app/src/main/java/com/casic/endoscope/greendao/CameraPointBeanDao.java +++ /dev/null @@ -1,138 +0,0 @@ -package com.casic.endoscope.greendao; - -import android.database.Cursor; -import android.database.sqlite.SQLiteStatement; - -import com.casic.endoscope.bean.CameraPointBean; - -import org.greenrobot.greendao.AbstractDao; -import org.greenrobot.greendao.Property; -import org.greenrobot.greendao.database.Database; -import org.greenrobot.greendao.database.DatabaseStatement; -import org.greenrobot.greendao.internal.DaoConfig; - -// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. - -/** - * DAO for table "CAMERA_POINT_BEAN". - */ -public class CameraPointBeanDao extends AbstractDao { - - public static final String TABLENAME = "CAMERA_POINT_BEAN"; - - /** - * Properties of entity CameraPointBean.
- * Can be used for QueryBuilder and for referencing column names. - */ - public static class Properties { - public final static Property Id = new Property(0, Long.class, "id", true, "_id"); - public final static Property Step = new Property(1, int.class, "step", false, "STEP"); - public final static Property HAngle = new Property(2, int.class, "hAngle", false, "H_ANGLE"); - public final static Property VAngle = new Property(3, int.class, "vAngle", false, "V_ANGLE"); - } - - - public CameraPointBeanDao(DaoConfig config) { - super(config); - } - - public CameraPointBeanDao(DaoConfig config, DaoSession daoSession) { - super(config, daoSession); - } - - /** - * Creates the underlying database table. - */ - public static void createTable(Database db, boolean ifNotExists) { - String constraint = ifNotExists ? "IF NOT EXISTS " : ""; - db.execSQL("CREATE TABLE " + constraint + "\"CAMERA_POINT_BEAN\" (" + // - "\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id - "\"STEP\" INTEGER NOT NULL ," + // 1: step - "\"H_ANGLE\" INTEGER NOT NULL ," + // 2: hAngle - "\"V_ANGLE\" INTEGER NOT NULL );"); // 3: vAngle - } - - /** - * Drops the underlying database table. - */ - public static void dropTable(Database db, boolean ifExists) { - String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"CAMERA_POINT_BEAN\""; - db.execSQL(sql); - } - - @Override - protected final void bindValues(DatabaseStatement stmt, CameraPointBean entity) { - stmt.clearBindings(); - - Long id = entity.getId(); - if (id != null) { - stmt.bindLong(1, id); - } - stmt.bindLong(2, entity.getStep()); - stmt.bindLong(3, entity.getHAngle()); - stmt.bindLong(4, entity.getVAngle()); - } - - @Override - protected final void bindValues(SQLiteStatement stmt, CameraPointBean entity) { - stmt.clearBindings(); - - Long id = entity.getId(); - if (id != null) { - stmt.bindLong(1, id); - } - stmt.bindLong(2, entity.getStep()); - stmt.bindLong(3, entity.getHAngle()); - stmt.bindLong(4, entity.getVAngle()); - } - - @Override - public Long readKey(Cursor cursor, int offset) { - return cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0); - } - - @Override - public CameraPointBean readEntity(Cursor cursor, int offset) { - CameraPointBean entity = new CameraPointBean( // - cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id - cursor.getInt(offset + 1), // step - cursor.getInt(offset + 2), // hAngle - cursor.getInt(offset + 3) // vAngle - ); - return entity; - } - - @Override - public void readEntity(Cursor cursor, CameraPointBean entity, int offset) { - entity.setId(cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0)); - entity.setStep(cursor.getInt(offset + 1)); - entity.setHAngle(cursor.getInt(offset + 2)); - entity.setVAngle(cursor.getInt(offset + 3)); - } - - @Override - protected final Long updateKeyAfterInsert(CameraPointBean entity, long rowId) { - entity.setId(rowId); - return rowId; - } - - @Override - public Long getKey(CameraPointBean entity) { - if (entity != null) { - return entity.getId(); - } else { - return null; - } - } - - @Override - public boolean hasKey(CameraPointBean entity) { - return entity.getId() != null; - } - - @Override - protected final boolean isEntityUpdateable() { - return true; - } - -} diff --git a/app/src/main/java/com/casic/endoscope/greendao/DaoMaster.java b/app/src/main/java/com/casic/endoscope/greendao/DaoMaster.java index 5d4fa30..a455fd0 100644 --- a/app/src/main/java/com/casic/endoscope/greendao/DaoMaster.java +++ b/app/src/main/java/com/casic/endoscope/greendao/DaoMaster.java @@ -13,25 +13,20 @@ // THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. - /** * Master of DAO (schema version 1): knows all DAOs. */ public class DaoMaster extends AbstractDaoMaster { public static final int SCHEMA_VERSION = 1; - /** - * Creates underlying database table using DAOs. - */ + /** Creates underlying database table using DAOs. */ public static void createAllTables(Database db, boolean ifNotExists) { - CameraPointBeanDao.createTable(db, ifNotExists); + GasValueBeanDao.createTable(db, ifNotExists); } - /** - * Drops underlying database table using DAOs. - */ + /** Drops underlying database table using DAOs. */ public static void dropAllTables(Database db, boolean ifExists) { - CameraPointBeanDao.dropTable(db, ifExists); + GasValueBeanDao.dropTable(db, ifExists); } /** @@ -50,7 +45,7 @@ public DaoMaster(Database db) { super(db, SCHEMA_VERSION); - registerDaoClass(CameraPointBeanDao.class); + registerDaoClass(GasValueBeanDao.class); } public DaoSession newSession() { @@ -80,9 +75,7 @@ } } - /** - * WARNING: Drops all table on Upgrade! Use only during development. - */ + /** WARNING: Drops all table on Upgrade! Use only during development. */ public static class DevOpenHelper extends OpenHelper { public DevOpenHelper(Context context, String name) { super(context, name); diff --git a/app/src/main/java/com/casic/endoscope/greendao/DaoSession.java b/app/src/main/java/com/casic/endoscope/greendao/DaoSession.java index ed2f9c0..259243d 100644 --- a/app/src/main/java/com/casic/endoscope/greendao/DaoSession.java +++ b/app/src/main/java/com/casic/endoscope/greendao/DaoSession.java @@ -1,6 +1,6 @@ package com.casic.endoscope.greendao; -import com.casic.endoscope.bean.CameraPointBean; +import com.casic.endoscope.bean.GasValueBean; import org.greenrobot.greendao.AbstractDao; import org.greenrobot.greendao.AbstractDaoSession; @@ -19,28 +19,28 @@ */ public class DaoSession extends AbstractDaoSession { - private final DaoConfig cameraPointBeanDaoConfig; + private final DaoConfig gasValueBeanDaoConfig; - private final CameraPointBeanDao cameraPointBeanDao; + private final GasValueBeanDao gasValueBeanDao; public DaoSession(Database db, IdentityScopeType type, Map>, DaoConfig> daoConfigMap) { super(db); - cameraPointBeanDaoConfig = daoConfigMap.get(CameraPointBeanDao.class).clone(); - cameraPointBeanDaoConfig.initIdentityScope(type); + gasValueBeanDaoConfig = daoConfigMap.get(GasValueBeanDao.class).clone(); + gasValueBeanDaoConfig.initIdentityScope(type); - cameraPointBeanDao = new CameraPointBeanDao(cameraPointBeanDaoConfig, this); + gasValueBeanDao = new GasValueBeanDao(gasValueBeanDaoConfig, this); - registerDao(CameraPointBean.class, cameraPointBeanDao); + registerDao(GasValueBean.class, gasValueBeanDao); } public void clear() { - cameraPointBeanDaoConfig.clearIdentityScope(); + gasValueBeanDaoConfig.clearIdentityScope(); } - public CameraPointBeanDao getCameraPointBeanDao() { - return cameraPointBeanDao; + public GasValueBeanDao getGasValueBeanDao() { + return gasValueBeanDao; } } diff --git a/app/src/main/java/com/casic/endoscope/greendao/GasValueBeanDao.java b/app/src/main/java/com/casic/endoscope/greendao/GasValueBeanDao.java new file mode 100644 index 0000000..5149375 --- /dev/null +++ b/app/src/main/java/com/casic/endoscope/greendao/GasValueBeanDao.java @@ -0,0 +1,149 @@ +package com.casic.endoscope.greendao; + +import android.database.Cursor; +import android.database.sqlite.SQLiteStatement; + +import com.casic.endoscope.bean.GasValueBean; + +import org.greenrobot.greendao.AbstractDao; +import org.greenrobot.greendao.Property; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.database.DatabaseStatement; +import org.greenrobot.greendao.internal.DaoConfig; + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. +/** + * DAO for table "GAS_VALUE_BEAN". +*/ +public class GasValueBeanDao extends AbstractDao { + + public static final String TABLENAME = "GAS_VALUE_BEAN"; + + /** + * Properties of entity GasValueBean.
+ * Can be used for QueryBuilder and for referencing column names. + */ + public static class Properties { + public final static Property Id = new Property(0, Long.class, "id", true, "_id"); + public final static Property Time = new Property(1, String.class, "time", false, "TIME"); + public final static Property Value = new Property(2, int.class, "value", false, "VALUE"); + public final static Property Location = new Property(3, String.class, "location", false, "LOCATION"); + } + + + public GasValueBeanDao(DaoConfig config) { + super(config); + } + + public GasValueBeanDao(DaoConfig config, DaoSession daoSession) { + super(config, daoSession); + } + + /** Creates the underlying database table. */ + public static void createTable(Database db, boolean ifNotExists) { + String constraint = ifNotExists? "IF NOT EXISTS ": ""; + db.execSQL("CREATE TABLE " + constraint + "\"GAS_VALUE_BEAN\" (" + // + "\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id + "\"TIME\" TEXT," + // 1: time + "\"VALUE\" INTEGER NOT NULL ," + // 2: value + "\"LOCATION\" TEXT);"); // 3: location + } + + /** Drops the underlying database table. */ + public static void dropTable(Database db, boolean ifExists) { + String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"GAS_VALUE_BEAN\""; + db.execSQL(sql); + } + + @Override + protected final void bindValues(DatabaseStatement stmt, GasValueBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String time = entity.getTime(); + if (time != null) { + stmt.bindString(2, time); + } + stmt.bindLong(3, entity.getValue()); + + String location = entity.getLocation(); + if (location != null) { + stmt.bindString(4, location); + } + } + + @Override + protected final void bindValues(SQLiteStatement stmt, GasValueBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String time = entity.getTime(); + if (time != null) { + stmt.bindString(2, time); + } + stmt.bindLong(3, entity.getValue()); + + String location = entity.getLocation(); + if (location != null) { + stmt.bindString(4, location); + } + } + + @Override + public Long readKey(Cursor cursor, int offset) { + return cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0); + } + + @Override + public GasValueBean readEntity(Cursor cursor, int offset) { + GasValueBean entity = new GasValueBean( // + cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id + cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // time + cursor.getInt(offset + 2), // value + cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3) // location + ); + return entity; + } + + @Override + public void readEntity(Cursor cursor, GasValueBean entity, int offset) { + entity.setId(cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0)); + entity.setTime(cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1)); + entity.setValue(cursor.getInt(offset + 2)); + entity.setLocation(cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3)); + } + + @Override + protected final Long updateKeyAfterInsert(GasValueBean entity, long rowId) { + entity.setId(rowId); + return rowId; + } + + @Override + public Long getKey(GasValueBean entity) { + if(entity != null) { + return entity.getId(); + } else { + return null; + } + } + + @Override + public boolean hasKey(GasValueBean entity) { + return entity.getId() != null; + } + + @Override + protected final boolean isEntityUpdateable() { + return true; + } + +} diff --git a/app/src/main/java/com/casic/endoscope/utils/DataBaseManager.kt b/app/src/main/java/com/casic/endoscope/utils/DataBaseManager.kt index a593a5b..c683db1 100644 --- a/app/src/main/java/com/casic/endoscope/utils/DataBaseManager.kt +++ b/app/src/main/java/com/casic/endoscope/utils/DataBaseManager.kt @@ -1,8 +1,6 @@ package com.casic.endoscope.utils import com.casic.endoscope.base.BaseApplication -import com.casic.endoscope.bean.CameraPointBean -import com.casic.endoscope.greendao.CameraPointBeanDao class DataBaseManager private constructor() { @@ -13,31 +11,5 @@ } } - private var cameraPointDao = BaseApplication.get().getDaoSession().cameraPointBeanDao - - fun cacheCameraPoint(step: Int, h: Int, v: Int) { - val bean = CameraPointBean() - bean.step = step - bean.hAngle = h - bean.vAngle = v - cameraPointDao.insert(bean) - } - - fun deleteCameraPoints(beans: MutableList) { - beans.forEach { - cameraPointDao.delete(it) - } - } - - fun deleteAllCameraPoint() { - cameraPointDao.deleteAll() - } - - fun queryCameraPointById(id: Long): CameraPointBean { - return cameraPointDao.queryBuilder() - .where(CameraPointBeanDao.Properties.Id.eq(id)) - .unique() - } - - fun loadAllCameraPoint(): MutableList = cameraPointDao.loadAll() + private var gasValueBeanDao = BaseApplication.get().getDaoSession().gasValueBeanDao } \ No newline at end of file diff --git a/app/src/main/java/com/casic/endoscope/utils/EndoscopeDevOpenHelper.kt b/app/src/main/java/com/casic/endoscope/utils/EndoscopeDevOpenHelper.kt index 507b1ff..fd87f0f 100644 --- a/app/src/main/java/com/casic/endoscope/utils/EndoscopeDevOpenHelper.kt +++ b/app/src/main/java/com/casic/endoscope/utils/EndoscopeDevOpenHelper.kt @@ -2,8 +2,8 @@ import android.content.Context import android.database.sqlite.SQLiteDatabase.CursorFactory -import com.casic.endoscope.greendao.CameraPointBeanDao import com.casic.endoscope.greendao.DaoMaster +import com.casic.endoscope.greendao.GasValueBeanDao import com.github.yuweiguocn.library.greendao.MigrationHelper import com.github.yuweiguocn.library.greendao.MigrationHelper.ReCreateAllTableListener import org.greenrobot.greendao.database.Database @@ -22,7 +22,7 @@ DaoMaster.dropAllTables(db, ifExists) } }, - CameraPointBeanDao::class.java + GasValueBeanDao::class.java ) } } \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index c2a2c53..64d4d0c 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -72,7 +72,7 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5.4' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.8' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.cardview:cardview:1.0.0' diff --git a/app/src/main/java/com/casic/endoscope/adapter/CameraPointAdapter.kt b/app/src/main/java/com/casic/endoscope/adapter/CameraPointAdapter.kt deleted file mode 100644 index fe404b2..0000000 --- a/app/src/main/java/com/casic/endoscope/adapter/CameraPointAdapter.kt +++ /dev/null @@ -1,78 +0,0 @@ -package com.casic.endoscope.adapter - -import android.annotation.SuppressLint -import android.content.Context -import android.graphics.Color -import android.view.LayoutInflater -import android.view.ViewGroup -import android.widget.LinearLayout -import androidx.recyclerview.widget.RecyclerView -import com.casic.endoscope.R -import com.casic.endoscope.bean.CameraPointBean -import com.pengxh.kt.lite.adapter.ViewHolder -import com.pengxh.kt.lite.extensions.convertColor - -class CameraPointAdapter( - private val context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var multipleSelected = mutableSetOf() - private var selectedItems = ArrayList() - - override fun getItemCount(): Int = dataRows.size - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { - return ViewHolder( - LayoutInflater.from(context).inflate(R.layout.item_point_list_rv, parent, false) - ) - } - - @SuppressLint("NotifyDataSetChanged") - fun setRefreshData(dataRows: MutableList) { - this.dataRows.clear() - this.dataRows.addAll(dataRows) - notifyDataSetChanged() - multipleSelected.clear() - selectedItems.clear() - } - - override fun onBindViewHolder(holder: ViewHolder, position: Int) { - val item = dataRows[position] - holder.setText(R.id.stepNameView, "步骤 ${item.step}") - .setText(R.id.hAngleView, "水平角度 ${item.hAngle}°") - .setText(R.id.vAngleView, "垂直角度 ${item.vAngle}°") - - val linearLayout = holder.itemView.findViewById(R.id.rootView) - //item背景色 - if (position % 2 == 0) { - linearLayout.setBackgroundColor(Color.parseColor("#C8E3F4")) - } else { - linearLayout.setBackgroundColor(R.color.backgroundColor.convertColor(context)) - } - - holder.itemView.isSelected = multipleSelected.contains(position) - holder.itemView.setOnClickListener { - if (multipleSelected.contains(position)) { - multipleSelected.remove(position) - selectedItems.remove(dataRows[position]) - holder.itemView.isSelected = false - } else { - multipleSelected.add(position) - selectedItems.add(dataRows[position]) - holder.itemView.isSelected = true - } - - itemCheckedListener?.onItemChecked(position, selectedItems) - } - } - - private var itemCheckedListener: OnItemCheckedListener? = null - - interface OnItemCheckedListener { - fun onItemChecked(position: Int, items: ArrayList) - } - - fun setOnItemCheckedListener(listener: OnItemCheckedListener) { - itemCheckedListener = listener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/endoscope/bean/CameraPointBean.java b/app/src/main/java/com/casic/endoscope/bean/CameraPointBean.java deleted file mode 100644 index 3a20d82..0000000 --- a/app/src/main/java/com/casic/endoscope/bean/CameraPointBean.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.casic.endoscope.bean; - -import org.greenrobot.greendao.annotation.Entity; -import org.greenrobot.greendao.annotation.Generated; -import org.greenrobot.greendao.annotation.Id; - -/** - * 必须是java,不能是kt - */ -@Entity -public class CameraPointBean { - - @Id(autoincrement = true) - private Long id;//主键自增 - - private int step;//步骤序号 - private int hAngle;//水平角度 - private int vAngle;//垂直角度 - - @Generated(hash = 1436018650) - public CameraPointBean(Long id, int step, int hAngle, int vAngle) { - this.id = id; - this.step = step; - this.hAngle = hAngle; - this.vAngle = vAngle; - } - - @Generated(hash = 44086073) - public CameraPointBean() { - } - - public Long getId() { - return this.id; - } - - public void setId(Long id) { - this.id = id; - } - - public int getStep() { - return this.step; - } - - public void setStep(int step) { - this.step = step; - } - - public int getHAngle() { - return this.hAngle; - } - - public void setHAngle(int hAngle) { - this.hAngle = hAngle; - } - - public int getVAngle() { - return this.vAngle; - } - - public void setVAngle(int vAngle) { - this.vAngle = vAngle; - } -} diff --git a/app/src/main/java/com/casic/endoscope/bean/GasValueBean.java b/app/src/main/java/com/casic/endoscope/bean/GasValueBean.java new file mode 100644 index 0000000..6537b9a --- /dev/null +++ b/app/src/main/java/com/casic/endoscope/bean/GasValueBean.java @@ -0,0 +1,63 @@ +package com.casic.endoscope.bean; + +import org.greenrobot.greendao.annotation.Entity; +import org.greenrobot.greendao.annotation.Generated; +import org.greenrobot.greendao.annotation.Id; + +/** + * 必须是java,不能是kt + * 甲烷浓度表结构 + */ +@Entity +public class GasValueBean { + @Id(autoincrement = true) + private Long id;//主键自增 + + private String time;//采集浓度的时间 + private int value;//采集的浓度 + private String location;//浓度采集点位置 + + @Generated(hash = 663679791) + public GasValueBean(Long id, String time, int value, String location) { + this.id = id; + this.time = time; + this.value = value; + this.location = location; + } + + @Generated(hash = 291409217) + public GasValueBean() { + } + + public Long getId() { + return this.id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getTime() { + return this.time; + } + + public void setTime(String time) { + this.time = time; + } + + public int getValue() { + return this.value; + } + + public void setValue(int value) { + this.value = value; + } + + public String getLocation() { + return this.location; + } + + public void setLocation(String location) { + this.location = location; + } +} diff --git a/app/src/main/java/com/casic/endoscope/greendao/CameraPointBeanDao.java b/app/src/main/java/com/casic/endoscope/greendao/CameraPointBeanDao.java deleted file mode 100644 index 11bc932..0000000 --- a/app/src/main/java/com/casic/endoscope/greendao/CameraPointBeanDao.java +++ /dev/null @@ -1,138 +0,0 @@ -package com.casic.endoscope.greendao; - -import android.database.Cursor; -import android.database.sqlite.SQLiteStatement; - -import com.casic.endoscope.bean.CameraPointBean; - -import org.greenrobot.greendao.AbstractDao; -import org.greenrobot.greendao.Property; -import org.greenrobot.greendao.database.Database; -import org.greenrobot.greendao.database.DatabaseStatement; -import org.greenrobot.greendao.internal.DaoConfig; - -// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. - -/** - * DAO for table "CAMERA_POINT_BEAN". - */ -public class CameraPointBeanDao extends AbstractDao { - - public static final String TABLENAME = "CAMERA_POINT_BEAN"; - - /** - * Properties of entity CameraPointBean.
- * Can be used for QueryBuilder and for referencing column names. - */ - public static class Properties { - public final static Property Id = new Property(0, Long.class, "id", true, "_id"); - public final static Property Step = new Property(1, int.class, "step", false, "STEP"); - public final static Property HAngle = new Property(2, int.class, "hAngle", false, "H_ANGLE"); - public final static Property VAngle = new Property(3, int.class, "vAngle", false, "V_ANGLE"); - } - - - public CameraPointBeanDao(DaoConfig config) { - super(config); - } - - public CameraPointBeanDao(DaoConfig config, DaoSession daoSession) { - super(config, daoSession); - } - - /** - * Creates the underlying database table. - */ - public static void createTable(Database db, boolean ifNotExists) { - String constraint = ifNotExists ? "IF NOT EXISTS " : ""; - db.execSQL("CREATE TABLE " + constraint + "\"CAMERA_POINT_BEAN\" (" + // - "\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id - "\"STEP\" INTEGER NOT NULL ," + // 1: step - "\"H_ANGLE\" INTEGER NOT NULL ," + // 2: hAngle - "\"V_ANGLE\" INTEGER NOT NULL );"); // 3: vAngle - } - - /** - * Drops the underlying database table. - */ - public static void dropTable(Database db, boolean ifExists) { - String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"CAMERA_POINT_BEAN\""; - db.execSQL(sql); - } - - @Override - protected final void bindValues(DatabaseStatement stmt, CameraPointBean entity) { - stmt.clearBindings(); - - Long id = entity.getId(); - if (id != null) { - stmt.bindLong(1, id); - } - stmt.bindLong(2, entity.getStep()); - stmt.bindLong(3, entity.getHAngle()); - stmt.bindLong(4, entity.getVAngle()); - } - - @Override - protected final void bindValues(SQLiteStatement stmt, CameraPointBean entity) { - stmt.clearBindings(); - - Long id = entity.getId(); - if (id != null) { - stmt.bindLong(1, id); - } - stmt.bindLong(2, entity.getStep()); - stmt.bindLong(3, entity.getHAngle()); - stmt.bindLong(4, entity.getVAngle()); - } - - @Override - public Long readKey(Cursor cursor, int offset) { - return cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0); - } - - @Override - public CameraPointBean readEntity(Cursor cursor, int offset) { - CameraPointBean entity = new CameraPointBean( // - cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id - cursor.getInt(offset + 1), // step - cursor.getInt(offset + 2), // hAngle - cursor.getInt(offset + 3) // vAngle - ); - return entity; - } - - @Override - public void readEntity(Cursor cursor, CameraPointBean entity, int offset) { - entity.setId(cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0)); - entity.setStep(cursor.getInt(offset + 1)); - entity.setHAngle(cursor.getInt(offset + 2)); - entity.setVAngle(cursor.getInt(offset + 3)); - } - - @Override - protected final Long updateKeyAfterInsert(CameraPointBean entity, long rowId) { - entity.setId(rowId); - return rowId; - } - - @Override - public Long getKey(CameraPointBean entity) { - if (entity != null) { - return entity.getId(); - } else { - return null; - } - } - - @Override - public boolean hasKey(CameraPointBean entity) { - return entity.getId() != null; - } - - @Override - protected final boolean isEntityUpdateable() { - return true; - } - -} diff --git a/app/src/main/java/com/casic/endoscope/greendao/DaoMaster.java b/app/src/main/java/com/casic/endoscope/greendao/DaoMaster.java index 5d4fa30..a455fd0 100644 --- a/app/src/main/java/com/casic/endoscope/greendao/DaoMaster.java +++ b/app/src/main/java/com/casic/endoscope/greendao/DaoMaster.java @@ -13,25 +13,20 @@ // THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. - /** * Master of DAO (schema version 1): knows all DAOs. */ public class DaoMaster extends AbstractDaoMaster { public static final int SCHEMA_VERSION = 1; - /** - * Creates underlying database table using DAOs. - */ + /** Creates underlying database table using DAOs. */ public static void createAllTables(Database db, boolean ifNotExists) { - CameraPointBeanDao.createTable(db, ifNotExists); + GasValueBeanDao.createTable(db, ifNotExists); } - /** - * Drops underlying database table using DAOs. - */ + /** Drops underlying database table using DAOs. */ public static void dropAllTables(Database db, boolean ifExists) { - CameraPointBeanDao.dropTable(db, ifExists); + GasValueBeanDao.dropTable(db, ifExists); } /** @@ -50,7 +45,7 @@ public DaoMaster(Database db) { super(db, SCHEMA_VERSION); - registerDaoClass(CameraPointBeanDao.class); + registerDaoClass(GasValueBeanDao.class); } public DaoSession newSession() { @@ -80,9 +75,7 @@ } } - /** - * WARNING: Drops all table on Upgrade! Use only during development. - */ + /** WARNING: Drops all table on Upgrade! Use only during development. */ public static class DevOpenHelper extends OpenHelper { public DevOpenHelper(Context context, String name) { super(context, name); diff --git a/app/src/main/java/com/casic/endoscope/greendao/DaoSession.java b/app/src/main/java/com/casic/endoscope/greendao/DaoSession.java index ed2f9c0..259243d 100644 --- a/app/src/main/java/com/casic/endoscope/greendao/DaoSession.java +++ b/app/src/main/java/com/casic/endoscope/greendao/DaoSession.java @@ -1,6 +1,6 @@ package com.casic.endoscope.greendao; -import com.casic.endoscope.bean.CameraPointBean; +import com.casic.endoscope.bean.GasValueBean; import org.greenrobot.greendao.AbstractDao; import org.greenrobot.greendao.AbstractDaoSession; @@ -19,28 +19,28 @@ */ public class DaoSession extends AbstractDaoSession { - private final DaoConfig cameraPointBeanDaoConfig; + private final DaoConfig gasValueBeanDaoConfig; - private final CameraPointBeanDao cameraPointBeanDao; + private final GasValueBeanDao gasValueBeanDao; public DaoSession(Database db, IdentityScopeType type, Map>, DaoConfig> daoConfigMap) { super(db); - cameraPointBeanDaoConfig = daoConfigMap.get(CameraPointBeanDao.class).clone(); - cameraPointBeanDaoConfig.initIdentityScope(type); + gasValueBeanDaoConfig = daoConfigMap.get(GasValueBeanDao.class).clone(); + gasValueBeanDaoConfig.initIdentityScope(type); - cameraPointBeanDao = new CameraPointBeanDao(cameraPointBeanDaoConfig, this); + gasValueBeanDao = new GasValueBeanDao(gasValueBeanDaoConfig, this); - registerDao(CameraPointBean.class, cameraPointBeanDao); + registerDao(GasValueBean.class, gasValueBeanDao); } public void clear() { - cameraPointBeanDaoConfig.clearIdentityScope(); + gasValueBeanDaoConfig.clearIdentityScope(); } - public CameraPointBeanDao getCameraPointBeanDao() { - return cameraPointBeanDao; + public GasValueBeanDao getGasValueBeanDao() { + return gasValueBeanDao; } } diff --git a/app/src/main/java/com/casic/endoscope/greendao/GasValueBeanDao.java b/app/src/main/java/com/casic/endoscope/greendao/GasValueBeanDao.java new file mode 100644 index 0000000..5149375 --- /dev/null +++ b/app/src/main/java/com/casic/endoscope/greendao/GasValueBeanDao.java @@ -0,0 +1,149 @@ +package com.casic.endoscope.greendao; + +import android.database.Cursor; +import android.database.sqlite.SQLiteStatement; + +import com.casic.endoscope.bean.GasValueBean; + +import org.greenrobot.greendao.AbstractDao; +import org.greenrobot.greendao.Property; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.database.DatabaseStatement; +import org.greenrobot.greendao.internal.DaoConfig; + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. +/** + * DAO for table "GAS_VALUE_BEAN". +*/ +public class GasValueBeanDao extends AbstractDao { + + public static final String TABLENAME = "GAS_VALUE_BEAN"; + + /** + * Properties of entity GasValueBean.
+ * Can be used for QueryBuilder and for referencing column names. + */ + public static class Properties { + public final static Property Id = new Property(0, Long.class, "id", true, "_id"); + public final static Property Time = new Property(1, String.class, "time", false, "TIME"); + public final static Property Value = new Property(2, int.class, "value", false, "VALUE"); + public final static Property Location = new Property(3, String.class, "location", false, "LOCATION"); + } + + + public GasValueBeanDao(DaoConfig config) { + super(config); + } + + public GasValueBeanDao(DaoConfig config, DaoSession daoSession) { + super(config, daoSession); + } + + /** Creates the underlying database table. */ + public static void createTable(Database db, boolean ifNotExists) { + String constraint = ifNotExists? "IF NOT EXISTS ": ""; + db.execSQL("CREATE TABLE " + constraint + "\"GAS_VALUE_BEAN\" (" + // + "\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id + "\"TIME\" TEXT," + // 1: time + "\"VALUE\" INTEGER NOT NULL ," + // 2: value + "\"LOCATION\" TEXT);"); // 3: location + } + + /** Drops the underlying database table. */ + public static void dropTable(Database db, boolean ifExists) { + String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"GAS_VALUE_BEAN\""; + db.execSQL(sql); + } + + @Override + protected final void bindValues(DatabaseStatement stmt, GasValueBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String time = entity.getTime(); + if (time != null) { + stmt.bindString(2, time); + } + stmt.bindLong(3, entity.getValue()); + + String location = entity.getLocation(); + if (location != null) { + stmt.bindString(4, location); + } + } + + @Override + protected final void bindValues(SQLiteStatement stmt, GasValueBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String time = entity.getTime(); + if (time != null) { + stmt.bindString(2, time); + } + stmt.bindLong(3, entity.getValue()); + + String location = entity.getLocation(); + if (location != null) { + stmt.bindString(4, location); + } + } + + @Override + public Long readKey(Cursor cursor, int offset) { + return cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0); + } + + @Override + public GasValueBean readEntity(Cursor cursor, int offset) { + GasValueBean entity = new GasValueBean( // + cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id + cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // time + cursor.getInt(offset + 2), // value + cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3) // location + ); + return entity; + } + + @Override + public void readEntity(Cursor cursor, GasValueBean entity, int offset) { + entity.setId(cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0)); + entity.setTime(cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1)); + entity.setValue(cursor.getInt(offset + 2)); + entity.setLocation(cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3)); + } + + @Override + protected final Long updateKeyAfterInsert(GasValueBean entity, long rowId) { + entity.setId(rowId); + return rowId; + } + + @Override + public Long getKey(GasValueBean entity) { + if(entity != null) { + return entity.getId(); + } else { + return null; + } + } + + @Override + public boolean hasKey(GasValueBean entity) { + return entity.getId() != null; + } + + @Override + protected final boolean isEntityUpdateable() { + return true; + } + +} diff --git a/app/src/main/java/com/casic/endoscope/utils/DataBaseManager.kt b/app/src/main/java/com/casic/endoscope/utils/DataBaseManager.kt index a593a5b..c683db1 100644 --- a/app/src/main/java/com/casic/endoscope/utils/DataBaseManager.kt +++ b/app/src/main/java/com/casic/endoscope/utils/DataBaseManager.kt @@ -1,8 +1,6 @@ package com.casic.endoscope.utils import com.casic.endoscope.base.BaseApplication -import com.casic.endoscope.bean.CameraPointBean -import com.casic.endoscope.greendao.CameraPointBeanDao class DataBaseManager private constructor() { @@ -13,31 +11,5 @@ } } - private var cameraPointDao = BaseApplication.get().getDaoSession().cameraPointBeanDao - - fun cacheCameraPoint(step: Int, h: Int, v: Int) { - val bean = CameraPointBean() - bean.step = step - bean.hAngle = h - bean.vAngle = v - cameraPointDao.insert(bean) - } - - fun deleteCameraPoints(beans: MutableList) { - beans.forEach { - cameraPointDao.delete(it) - } - } - - fun deleteAllCameraPoint() { - cameraPointDao.deleteAll() - } - - fun queryCameraPointById(id: Long): CameraPointBean { - return cameraPointDao.queryBuilder() - .where(CameraPointBeanDao.Properties.Id.eq(id)) - .unique() - } - - fun loadAllCameraPoint(): MutableList = cameraPointDao.loadAll() + private var gasValueBeanDao = BaseApplication.get().getDaoSession().gasValueBeanDao } \ No newline at end of file diff --git a/app/src/main/java/com/casic/endoscope/utils/EndoscopeDevOpenHelper.kt b/app/src/main/java/com/casic/endoscope/utils/EndoscopeDevOpenHelper.kt index 507b1ff..fd87f0f 100644 --- a/app/src/main/java/com/casic/endoscope/utils/EndoscopeDevOpenHelper.kt +++ b/app/src/main/java/com/casic/endoscope/utils/EndoscopeDevOpenHelper.kt @@ -2,8 +2,8 @@ import android.content.Context import android.database.sqlite.SQLiteDatabase.CursorFactory -import com.casic.endoscope.greendao.CameraPointBeanDao import com.casic.endoscope.greendao.DaoMaster +import com.casic.endoscope.greendao.GasValueBeanDao import com.github.yuweiguocn.library.greendao.MigrationHelper import com.github.yuweiguocn.library.greendao.MigrationHelper.ReCreateAllTableListener import org.greenrobot.greendao.database.Database @@ -22,7 +22,7 @@ DaoMaster.dropAllTables(db, ifExists) } }, - CameraPointBeanDao::class.java + GasValueBeanDao::class.java ) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/endoscope/view/MainActivity.kt b/app/src/main/java/com/casic/endoscope/view/MainActivity.kt index 0fe757e..c4509b0 100644 --- a/app/src/main/java/com/casic/endoscope/view/MainActivity.kt +++ b/app/src/main/java/com/casic/endoscope/view/MainActivity.kt @@ -15,8 +15,6 @@ import android.view.SurfaceHolder import android.view.View import androidx.lifecycle.lifecycleScope -import com.casic.endoscope.adapter.CameraPointAdapter -import com.casic.endoscope.bean.CameraPointBean import com.casic.endoscope.databinding.ActivityMainBinding import com.casic.endoscope.extensions.check import com.casic.endoscope.extensions.convertValue @@ -28,14 +26,12 @@ import com.casic.endoscope.extensions.init import com.casic.endoscope.extensions.toTime import com.casic.endoscope.service.VideoTranscodeService -import com.casic.endoscope.utils.DataBaseManager import com.casic.endoscope.utils.ProjectConstant import com.casic.endoscope.utils.ble.BleDeviceManager import com.casic.endoscope.utils.ble.OnDeviceConnectListener import com.casic.endoscope.utils.ble.OnDeviceDiscoveredListener import com.casic.endoscope.utils.hk.MessageCodeHub import com.casic.endoscope.utils.hk.SDKGuider -import com.casic.endoscope.widgets.AddCameraPointDialog import com.casic.endoscope.widgets.BluetoothDeviceDialog import com.casic.endoscope.widgets.LineChartMarkerView import com.github.mikephil.charting.data.Entry @@ -55,10 +51,8 @@ import com.pengxh.kt.lite.extensions.timestampToTime import com.pengxh.kt.lite.utils.LoadingDialogHub import com.pengxh.kt.lite.utils.WeakReferenceHandler -import com.pengxh.kt.lite.widget.SteeringWheelView import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch -import kotlinx.coroutines.withContext import java.text.SimpleDateFormat import java.util.Date import java.util.Locale @@ -101,17 +95,11 @@ //焦距按钮是否已松开 private var isScaleButtonUp = true - //是否拍照成功 - private var isCaptureSuccess = true - private var timer: Timer? = null private var timerTask: TimerTask? = null private var seconds = 0L - private var dataBeans: MutableList = ArrayList() - private var selectedItems: MutableList = ArrayList() private var inputVideoPath = "" private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var dataAdapter: CameraPointAdapter private lateinit var serviceIntent: Intent private lateinit var dataSet: LineDataSet private lateinit var lineData: LineData @@ -123,8 +111,6 @@ override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) - dataBeans = DataBaseManager.get.loadAllCameraPoint() - //显示数据 weakReferenceHandler.sendEmptyMessage(messageCode) @@ -147,13 +133,7 @@ override fun handleMessage(msg: Message): Boolean { if (msg.what == messageCode) { //绑定数据 - dataAdapter = CameraPointAdapter(this, dataBeans) - binding.recyclerView.adapter = dataAdapter - dataAdapter.setOnItemCheckedListener(object : CameraPointAdapter.OnItemCheckedListener { - override fun onItemChecked(position: Int, items: ArrayList) { - selectedItems = items - } - }) + } return true } @@ -209,6 +189,180 @@ } } + binding.upScaleButton.setOnTouchListener { _, event -> + when (event.action) { + MotionEvent.ACTION_DOWN -> { + if (isPreviewSuccess && isScaleButtonUp) { + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_IN, 0) + isScaleButtonUp = false + } + } + + MotionEvent.ACTION_UP -> { + isScaleButtonUp = true + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_IN, 1) + } + } + false + } + + binding.downScaleButton.setOnTouchListener { _, event -> + when (event.action) { + MotionEvent.ACTION_DOWN -> { + if (isPreviewSuccess && isScaleButtonUp) { + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_OUT, 0) + isScaleButtonUp = false + } + } + + MotionEvent.ACTION_UP -> { + isScaleButtonUp = true + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_OUT, 1) + } + } + false + } + + binding.topButton.setOnTouchListener { _, motionEvent -> + when (motionEvent.action) { + MotionEvent.ACTION_DOWN -> { + if (isPreviewSuccess && isActionUp) { + hkSDK.NET_DVR_PTZControlWithSpeed( + previewHandle, PTZCommand.TILT_UP, 0, selectedSpeed + ) + isActionUp = false + } + } + + MotionEvent.ACTION_UP -> { + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.TILT_UP, 1) + isActionUp = true + } + } + false + } + + binding.centerButton.setOnClickListener { + if (!isPreviewSuccess) { + val deviceItem = SDKGuider.sdkGuider.devManageGuider.DeviceItem() + deviceItem.szDevName = "" + deviceItem.devNetInfo = SDKGuider.sdkGuider.devManageGuider.DevNetInfo( + ProjectConstant.HK_NET_IP, + ProjectConstant.HK_NET_PORT, + ProjectConstant.HK_NET_USERNAME, + ProjectConstant.HK_NET_PASSWORD + ) + if (deviceItem.szDevName.isEmpty()) { + deviceItem.szDevName = deviceItem.devNetInfo.szIp + } + val loginV40Jna = SDKGuider.sdkGuider.devManageGuider.login_v40_jna( + deviceItem.szDevName, deviceItem.devNetInfo + ) + if (loginV40Jna) { + //配置设备通道 + try { + val deviceInfo = SDKGuider.sdkGuider.devManageGuider.devList[0] + returnUserId = deviceInfo.szUserId + + aChannelNum = + deviceInfo.deviceInfoV40_jna.struDeviceV30.byChanNum.toInt() + startAChannel = + deviceInfo.deviceInfoV40_jna.struDeviceV30.byStartChan.toInt() + + dChannelNum = + deviceInfo.deviceInfoV40_jna.struDeviceV30.byIPChanNum + deviceInfo.deviceInfoV40_jna.struDeviceV30.byHighDChanNum * 256 + startDChannel = + deviceInfo.deviceInfoV40_jna.struDeviceV30.byStartChan.toInt() + + var iAnalogStartChan = startAChannel + var iDigitalStartChan = startDChannel + + val channelList = ArrayList() + + for (i in 0 until aChannelNum) { + channelList.add("ACamera_$iAnalogStartChan") + iAnalogStartChan++ + } + + for (i in 0 until dChannelNum) { + channelList.add("DCamera_$iDigitalStartChan") + iDigitalStartChan++ + } + selectChannel = Integer.valueOf(channelList[0].getChannel()) + + val streamList = ArrayList() + streamList.add("main_stream") + streamList.add("sub_stream") + streamList.add("third_stream") + + //开始预览 + if (previewHandle != -1) { + SDKGuider.sdkGuider.devPreviewGuider.RealPlay_Stop_jni(previewHandle) + } + val strutPlayInfo = NET_DVR_PREVIEWINFO() + strutPlayInfo.lChannel = selectChannel + strutPlayInfo.dwStreamType = 1 + strutPlayInfo.bBlocked = 1 + strutPlayInfo.hHwnd = binding.surfaceView.holder + previewHandle = SDKGuider.sdkGuider.devPreviewGuider.RealPlay_V40_jni( + returnUserId, strutPlayInfo, null + ) + if (previewHandle < 0) { + Log.d(kTag, "initEvent: Err:${MessageCodeHub.getErrorCode()}") + return@setOnClickListener + } + isPreviewSuccess = true + "预览开启成功".show(context) + //开始计时 + timer = Timer() + timerTask = object : TimerTask() { + override fun run() { + seconds++ + lifecycleScope.launch(Dispatchers.Main) { + binding.runningTimeView.text = seconds.toTime() + } + } + } + timer?.schedule(timerTask, 0, 1000) + } catch (e: IndexOutOfBoundsException) { + e.printStackTrace() + "设备未正常连接,无法开启预览".show(context) + } + } else { + "设备登陆失败".show(context) + } + } else { + if (!SDKGuider.sdkGuider.devPreviewGuider.RealPlay_Stop_jni(previewHandle)) { + return@setOnClickListener + } + previewHandle = -1 + isPreviewSuccess = false + "预览关闭成功".show(context) + //停止计时 + timerTask?.cancel() + timer?.cancel() + } + } + + binding.bottomButton.setOnTouchListener { _, motionEvent -> + when (motionEvent.action) { + MotionEvent.ACTION_DOWN -> { + if (isPreviewSuccess && isActionUp) { + hkSDK.NET_DVR_PTZControlWithSpeed( + previewHandle, PTZCommand.TILT_DOWN, 0, selectedSpeed + ) + isActionUp = false + } + } + + MotionEvent.ACTION_UP -> { + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.TILT_DOWN, 1) + isActionUp = true + } + } + false + } + //单张拍照 binding.imageButton.setOnClickListener { if (isPreviewSuccess) { @@ -252,278 +406,8 @@ true } - //连续拍照 - binding.multipleImageButton.setOnClickListener { - if (dataBeans.isEmpty()) { - "请先设置连续拍照步骤".show(this) - return@setOnClickListener - } - if (isPreviewSuccess) { - lifecycleScope.launch(Dispatchers.IO) { - dataBeans.forEach { - //再拍照 - if (isCaptureSuccess) { - isCaptureSuccess = false - - //先执行角度 - executeAngle(it.hAngle, it.vAngle) - - withContext(Dispatchers.Main) { - "抓取步骤${it.step}画面".show(context) - } - - val strJpeg = NET_DVR_JPEGPARA() - strJpeg.wPicQuality = 1 - strJpeg.wPicSize = 2 - - val imagePath = - "/${createImageFileDir()}/${timeFormat.format(Date())}.png" - hkSDK.NET_DVR_CaptureJPEGPicture( - returnUserId, selectChannel, strJpeg, imagePath - ) - - isCaptureSuccess = MessageCodeHub.getErrorCode() == 0 - } - } - withContext(Dispatchers.Main) { - "连续抓取画面完成".show(context) - } - } - } else { - "摄像头预览未打开,无法拍照".show(this) - } - } - - binding.addButton.setOnClickListener { - val step = if (dataBeans.isEmpty()) { - 0 - } else { - dataBeans.last().step - } - AddCameraPointDialog.Builder().setContext(this).setLastStep(step) - .setNegativeButton("取消").setPositiveButton("添加") - .setOnDialogButtonClickListener(object : - AddCameraPointDialog.OnDialogButtonClickListener { - override fun onConfirmClick(step: Int, hAngle: Int, vAngle: Int) { - DataBaseManager.get.cacheCameraPoint(step, hAngle, vAngle) - dataBeans = DataBaseManager.get.loadAllCameraPoint() - dataAdapter.setRefreshData(dataBeans) - } - - override fun onCancelClick() { - - } - }).build().show() - } - - binding.deleteButton.setOnClickListener { - if (selectedItems.isEmpty()) { - "请先选择要删除的步骤".show(this) - return@setOnClickListener - } - DataBaseManager.get.deleteCameraPoints(selectedItems) - dataBeans = DataBaseManager.get.loadAllCameraPoint() - dataAdapter.setRefreshData(dataBeans) - selectedItems.clear() - } - - binding.steeringWheelView.setOnWheelTouchListener(object : - SteeringWheelView.OnWheelTouchListener { - override fun onCenterClicked() { - if (!isPreviewSuccess) { - val deviceItem = SDKGuider.sdkGuider.devManageGuider.DeviceItem() - deviceItem.szDevName = "" - deviceItem.devNetInfo = SDKGuider.sdkGuider.devManageGuider.DevNetInfo( - ProjectConstant.HK_NET_IP, - ProjectConstant.HK_NET_PORT, - ProjectConstant.HK_NET_USERNAME, - ProjectConstant.HK_NET_PASSWORD - ) - if (deviceItem.szDevName.isEmpty()) { - deviceItem.szDevName = deviceItem.devNetInfo.szIp - } - val loginV40Jna = SDKGuider.sdkGuider.devManageGuider.login_v40_jna( - deviceItem.szDevName, deviceItem.devNetInfo - ) - if (loginV40Jna) { - //配置设备通道 - try { - val deviceInfo = SDKGuider.sdkGuider.devManageGuider.devList[0] - returnUserId = deviceInfo.szUserId - - aChannelNum = - deviceInfo.deviceInfoV40_jna.struDeviceV30.byChanNum.toInt() - startAChannel = - deviceInfo.deviceInfoV40_jna.struDeviceV30.byStartChan.toInt() - - dChannelNum = - deviceInfo.deviceInfoV40_jna.struDeviceV30.byIPChanNum + deviceInfo.deviceInfoV40_jna.struDeviceV30.byHighDChanNum * 256 - startDChannel = - deviceInfo.deviceInfoV40_jna.struDeviceV30.byStartChan.toInt() - - var iAnalogStartChan = startAChannel - var iDigitalStartChan = startDChannel - - val channelList = ArrayList() - - for (i in 0 until aChannelNum) { - channelList.add("ACamera_$iAnalogStartChan") - iAnalogStartChan++ - } - - for (i in 0 until dChannelNum) { - channelList.add("DCamera_$iDigitalStartChan") - iDigitalStartChan++ - } - selectChannel = Integer.valueOf(channelList[0].getChannel()) - - val streamList = ArrayList() - streamList.add("main_stream") - streamList.add("sub_stream") - streamList.add("third_stream") - - //开始预览 - if (previewHandle != -1) { - SDKGuider.sdkGuider.devPreviewGuider.RealPlay_Stop_jni(previewHandle) - } - val strutPlayInfo = NET_DVR_PREVIEWINFO() - strutPlayInfo.lChannel = selectChannel - strutPlayInfo.dwStreamType = 1 - strutPlayInfo.bBlocked = 1 - strutPlayInfo.hHwnd = binding.surfaceView.holder - previewHandle = SDKGuider.sdkGuider.devPreviewGuider.RealPlay_V40_jni( - returnUserId, strutPlayInfo, null - ) - if (previewHandle < 0) { - Log.d(kTag, "initEvent: Err:${MessageCodeHub.getErrorCode()}") - return - } - isPreviewSuccess = true - "预览开启成功".show(context) - //开始计时 - timer = Timer() - timerTask = object : TimerTask() { - override fun run() { - seconds++ - lifecycleScope.launch(Dispatchers.Main) { - binding.runningTimeView.text = seconds.toTime() - } - } - } - timer?.schedule(timerTask, 0, 1000) - } catch (e: IndexOutOfBoundsException) { - e.printStackTrace() - "设备未正常连接,无法开启预览".show(context) - } - } else { - "设备登陆失败".show(context) - } - } else { - if (!SDKGuider.sdkGuider.devPreviewGuider.RealPlay_Stop_jni(previewHandle)) { - return - } - previewHandle = -1 - isPreviewSuccess = false - "预览关闭成功".show(context) - //停止计时 - timerTask?.cancel() - timer?.cancel() - } - } - - override fun onLeftTurn() { - if (isPreviewSuccess && isActionUp) { - hkSDK.NET_DVR_PTZControlWithSpeed( - previewHandle, PTZCommand.PAN_LEFT, 0, selectedSpeed - ) - isActionUp = false - } - } - - override fun onTopTurn() { - if (isPreviewSuccess && isActionUp) { - hkSDK.NET_DVR_PTZControlWithSpeed( - previewHandle, PTZCommand.TILT_UP, 0, selectedSpeed - ) - isActionUp = false - } - } - - override fun onRightTurn() { - if (isPreviewSuccess && isActionUp) { - hkSDK.NET_DVR_PTZControlWithSpeed( - previewHandle, PTZCommand.PAN_RIGHT, 0, selectedSpeed - ) - isActionUp = false - } - } - - override fun onBottomTurn() { - if (isPreviewSuccess && isActionUp) { - hkSDK.NET_DVR_PTZControlWithSpeed( - previewHandle, PTZCommand.TILT_DOWN, 0, selectedSpeed - ) - isActionUp = false - } - } - - override fun onActionTurnUp(dir: SteeringWheelView.Direction) { - when (dir) { - SteeringWheelView.Direction.LEFT -> { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.PAN_LEFT, 1) - isActionUp = true - } - - SteeringWheelView.Direction.TOP -> { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.TILT_UP, 1) - isActionUp = true - } - - SteeringWheelView.Direction.RIGHT -> { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.PAN_RIGHT, 1) - isActionUp = true - } - - SteeringWheelView.Direction.BOTTOM -> { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.TILT_DOWN, 1) - isActionUp = true - } - } - } - }) - - binding.upScaleButton.setOnTouchListener { _, event -> - when (event.action) { - MotionEvent.ACTION_DOWN -> { - if (isPreviewSuccess && isScaleButtonUp) { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_IN, 0) - isScaleButtonUp = false - } - } - - MotionEvent.ACTION_UP -> { - isScaleButtonUp = true - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_IN, 1) - } - } - false - } - - binding.downScaleButton.setOnTouchListener { _, event -> - when (event.action) { - MotionEvent.ACTION_DOWN -> { - if (isPreviewSuccess && isScaleButtonUp) { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_OUT, 0) - isScaleButtonUp = false - } - } - - MotionEvent.ACTION_UP -> { - isScaleButtonUp = true - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_OUT, 1) - } - } - false + binding.resetButton.setOnClickListener { + executeAngle(0, 0) } } diff --git a/app/build.gradle b/app/build.gradle index c2a2c53..64d4d0c 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -72,7 +72,7 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5.4' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.8' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.cardview:cardview:1.0.0' diff --git a/app/src/main/java/com/casic/endoscope/adapter/CameraPointAdapter.kt b/app/src/main/java/com/casic/endoscope/adapter/CameraPointAdapter.kt deleted file mode 100644 index fe404b2..0000000 --- a/app/src/main/java/com/casic/endoscope/adapter/CameraPointAdapter.kt +++ /dev/null @@ -1,78 +0,0 @@ -package com.casic.endoscope.adapter - -import android.annotation.SuppressLint -import android.content.Context -import android.graphics.Color -import android.view.LayoutInflater -import android.view.ViewGroup -import android.widget.LinearLayout -import androidx.recyclerview.widget.RecyclerView -import com.casic.endoscope.R -import com.casic.endoscope.bean.CameraPointBean -import com.pengxh.kt.lite.adapter.ViewHolder -import com.pengxh.kt.lite.extensions.convertColor - -class CameraPointAdapter( - private val context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var multipleSelected = mutableSetOf() - private var selectedItems = ArrayList() - - override fun getItemCount(): Int = dataRows.size - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { - return ViewHolder( - LayoutInflater.from(context).inflate(R.layout.item_point_list_rv, parent, false) - ) - } - - @SuppressLint("NotifyDataSetChanged") - fun setRefreshData(dataRows: MutableList) { - this.dataRows.clear() - this.dataRows.addAll(dataRows) - notifyDataSetChanged() - multipleSelected.clear() - selectedItems.clear() - } - - override fun onBindViewHolder(holder: ViewHolder, position: Int) { - val item = dataRows[position] - holder.setText(R.id.stepNameView, "步骤 ${item.step}") - .setText(R.id.hAngleView, "水平角度 ${item.hAngle}°") - .setText(R.id.vAngleView, "垂直角度 ${item.vAngle}°") - - val linearLayout = holder.itemView.findViewById(R.id.rootView) - //item背景色 - if (position % 2 == 0) { - linearLayout.setBackgroundColor(Color.parseColor("#C8E3F4")) - } else { - linearLayout.setBackgroundColor(R.color.backgroundColor.convertColor(context)) - } - - holder.itemView.isSelected = multipleSelected.contains(position) - holder.itemView.setOnClickListener { - if (multipleSelected.contains(position)) { - multipleSelected.remove(position) - selectedItems.remove(dataRows[position]) - holder.itemView.isSelected = false - } else { - multipleSelected.add(position) - selectedItems.add(dataRows[position]) - holder.itemView.isSelected = true - } - - itemCheckedListener?.onItemChecked(position, selectedItems) - } - } - - private var itemCheckedListener: OnItemCheckedListener? = null - - interface OnItemCheckedListener { - fun onItemChecked(position: Int, items: ArrayList) - } - - fun setOnItemCheckedListener(listener: OnItemCheckedListener) { - itemCheckedListener = listener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/endoscope/bean/CameraPointBean.java b/app/src/main/java/com/casic/endoscope/bean/CameraPointBean.java deleted file mode 100644 index 3a20d82..0000000 --- a/app/src/main/java/com/casic/endoscope/bean/CameraPointBean.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.casic.endoscope.bean; - -import org.greenrobot.greendao.annotation.Entity; -import org.greenrobot.greendao.annotation.Generated; -import org.greenrobot.greendao.annotation.Id; - -/** - * 必须是java,不能是kt - */ -@Entity -public class CameraPointBean { - - @Id(autoincrement = true) - private Long id;//主键自增 - - private int step;//步骤序号 - private int hAngle;//水平角度 - private int vAngle;//垂直角度 - - @Generated(hash = 1436018650) - public CameraPointBean(Long id, int step, int hAngle, int vAngle) { - this.id = id; - this.step = step; - this.hAngle = hAngle; - this.vAngle = vAngle; - } - - @Generated(hash = 44086073) - public CameraPointBean() { - } - - public Long getId() { - return this.id; - } - - public void setId(Long id) { - this.id = id; - } - - public int getStep() { - return this.step; - } - - public void setStep(int step) { - this.step = step; - } - - public int getHAngle() { - return this.hAngle; - } - - public void setHAngle(int hAngle) { - this.hAngle = hAngle; - } - - public int getVAngle() { - return this.vAngle; - } - - public void setVAngle(int vAngle) { - this.vAngle = vAngle; - } -} diff --git a/app/src/main/java/com/casic/endoscope/bean/GasValueBean.java b/app/src/main/java/com/casic/endoscope/bean/GasValueBean.java new file mode 100644 index 0000000..6537b9a --- /dev/null +++ b/app/src/main/java/com/casic/endoscope/bean/GasValueBean.java @@ -0,0 +1,63 @@ +package com.casic.endoscope.bean; + +import org.greenrobot.greendao.annotation.Entity; +import org.greenrobot.greendao.annotation.Generated; +import org.greenrobot.greendao.annotation.Id; + +/** + * 必须是java,不能是kt + * 甲烷浓度表结构 + */ +@Entity +public class GasValueBean { + @Id(autoincrement = true) + private Long id;//主键自增 + + private String time;//采集浓度的时间 + private int value;//采集的浓度 + private String location;//浓度采集点位置 + + @Generated(hash = 663679791) + public GasValueBean(Long id, String time, int value, String location) { + this.id = id; + this.time = time; + this.value = value; + this.location = location; + } + + @Generated(hash = 291409217) + public GasValueBean() { + } + + public Long getId() { + return this.id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getTime() { + return this.time; + } + + public void setTime(String time) { + this.time = time; + } + + public int getValue() { + return this.value; + } + + public void setValue(int value) { + this.value = value; + } + + public String getLocation() { + return this.location; + } + + public void setLocation(String location) { + this.location = location; + } +} diff --git a/app/src/main/java/com/casic/endoscope/greendao/CameraPointBeanDao.java b/app/src/main/java/com/casic/endoscope/greendao/CameraPointBeanDao.java deleted file mode 100644 index 11bc932..0000000 --- a/app/src/main/java/com/casic/endoscope/greendao/CameraPointBeanDao.java +++ /dev/null @@ -1,138 +0,0 @@ -package com.casic.endoscope.greendao; - -import android.database.Cursor; -import android.database.sqlite.SQLiteStatement; - -import com.casic.endoscope.bean.CameraPointBean; - -import org.greenrobot.greendao.AbstractDao; -import org.greenrobot.greendao.Property; -import org.greenrobot.greendao.database.Database; -import org.greenrobot.greendao.database.DatabaseStatement; -import org.greenrobot.greendao.internal.DaoConfig; - -// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. - -/** - * DAO for table "CAMERA_POINT_BEAN". - */ -public class CameraPointBeanDao extends AbstractDao { - - public static final String TABLENAME = "CAMERA_POINT_BEAN"; - - /** - * Properties of entity CameraPointBean.
- * Can be used for QueryBuilder and for referencing column names. - */ - public static class Properties { - public final static Property Id = new Property(0, Long.class, "id", true, "_id"); - public final static Property Step = new Property(1, int.class, "step", false, "STEP"); - public final static Property HAngle = new Property(2, int.class, "hAngle", false, "H_ANGLE"); - public final static Property VAngle = new Property(3, int.class, "vAngle", false, "V_ANGLE"); - } - - - public CameraPointBeanDao(DaoConfig config) { - super(config); - } - - public CameraPointBeanDao(DaoConfig config, DaoSession daoSession) { - super(config, daoSession); - } - - /** - * Creates the underlying database table. - */ - public static void createTable(Database db, boolean ifNotExists) { - String constraint = ifNotExists ? "IF NOT EXISTS " : ""; - db.execSQL("CREATE TABLE " + constraint + "\"CAMERA_POINT_BEAN\" (" + // - "\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id - "\"STEP\" INTEGER NOT NULL ," + // 1: step - "\"H_ANGLE\" INTEGER NOT NULL ," + // 2: hAngle - "\"V_ANGLE\" INTEGER NOT NULL );"); // 3: vAngle - } - - /** - * Drops the underlying database table. - */ - public static void dropTable(Database db, boolean ifExists) { - String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"CAMERA_POINT_BEAN\""; - db.execSQL(sql); - } - - @Override - protected final void bindValues(DatabaseStatement stmt, CameraPointBean entity) { - stmt.clearBindings(); - - Long id = entity.getId(); - if (id != null) { - stmt.bindLong(1, id); - } - stmt.bindLong(2, entity.getStep()); - stmt.bindLong(3, entity.getHAngle()); - stmt.bindLong(4, entity.getVAngle()); - } - - @Override - protected final void bindValues(SQLiteStatement stmt, CameraPointBean entity) { - stmt.clearBindings(); - - Long id = entity.getId(); - if (id != null) { - stmt.bindLong(1, id); - } - stmt.bindLong(2, entity.getStep()); - stmt.bindLong(3, entity.getHAngle()); - stmt.bindLong(4, entity.getVAngle()); - } - - @Override - public Long readKey(Cursor cursor, int offset) { - return cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0); - } - - @Override - public CameraPointBean readEntity(Cursor cursor, int offset) { - CameraPointBean entity = new CameraPointBean( // - cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id - cursor.getInt(offset + 1), // step - cursor.getInt(offset + 2), // hAngle - cursor.getInt(offset + 3) // vAngle - ); - return entity; - } - - @Override - public void readEntity(Cursor cursor, CameraPointBean entity, int offset) { - entity.setId(cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0)); - entity.setStep(cursor.getInt(offset + 1)); - entity.setHAngle(cursor.getInt(offset + 2)); - entity.setVAngle(cursor.getInt(offset + 3)); - } - - @Override - protected final Long updateKeyAfterInsert(CameraPointBean entity, long rowId) { - entity.setId(rowId); - return rowId; - } - - @Override - public Long getKey(CameraPointBean entity) { - if (entity != null) { - return entity.getId(); - } else { - return null; - } - } - - @Override - public boolean hasKey(CameraPointBean entity) { - return entity.getId() != null; - } - - @Override - protected final boolean isEntityUpdateable() { - return true; - } - -} diff --git a/app/src/main/java/com/casic/endoscope/greendao/DaoMaster.java b/app/src/main/java/com/casic/endoscope/greendao/DaoMaster.java index 5d4fa30..a455fd0 100644 --- a/app/src/main/java/com/casic/endoscope/greendao/DaoMaster.java +++ b/app/src/main/java/com/casic/endoscope/greendao/DaoMaster.java @@ -13,25 +13,20 @@ // THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. - /** * Master of DAO (schema version 1): knows all DAOs. */ public class DaoMaster extends AbstractDaoMaster { public static final int SCHEMA_VERSION = 1; - /** - * Creates underlying database table using DAOs. - */ + /** Creates underlying database table using DAOs. */ public static void createAllTables(Database db, boolean ifNotExists) { - CameraPointBeanDao.createTable(db, ifNotExists); + GasValueBeanDao.createTable(db, ifNotExists); } - /** - * Drops underlying database table using DAOs. - */ + /** Drops underlying database table using DAOs. */ public static void dropAllTables(Database db, boolean ifExists) { - CameraPointBeanDao.dropTable(db, ifExists); + GasValueBeanDao.dropTable(db, ifExists); } /** @@ -50,7 +45,7 @@ public DaoMaster(Database db) { super(db, SCHEMA_VERSION); - registerDaoClass(CameraPointBeanDao.class); + registerDaoClass(GasValueBeanDao.class); } public DaoSession newSession() { @@ -80,9 +75,7 @@ } } - /** - * WARNING: Drops all table on Upgrade! Use only during development. - */ + /** WARNING: Drops all table on Upgrade! Use only during development. */ public static class DevOpenHelper extends OpenHelper { public DevOpenHelper(Context context, String name) { super(context, name); diff --git a/app/src/main/java/com/casic/endoscope/greendao/DaoSession.java b/app/src/main/java/com/casic/endoscope/greendao/DaoSession.java index ed2f9c0..259243d 100644 --- a/app/src/main/java/com/casic/endoscope/greendao/DaoSession.java +++ b/app/src/main/java/com/casic/endoscope/greendao/DaoSession.java @@ -1,6 +1,6 @@ package com.casic.endoscope.greendao; -import com.casic.endoscope.bean.CameraPointBean; +import com.casic.endoscope.bean.GasValueBean; import org.greenrobot.greendao.AbstractDao; import org.greenrobot.greendao.AbstractDaoSession; @@ -19,28 +19,28 @@ */ public class DaoSession extends AbstractDaoSession { - private final DaoConfig cameraPointBeanDaoConfig; + private final DaoConfig gasValueBeanDaoConfig; - private final CameraPointBeanDao cameraPointBeanDao; + private final GasValueBeanDao gasValueBeanDao; public DaoSession(Database db, IdentityScopeType type, Map>, DaoConfig> daoConfigMap) { super(db); - cameraPointBeanDaoConfig = daoConfigMap.get(CameraPointBeanDao.class).clone(); - cameraPointBeanDaoConfig.initIdentityScope(type); + gasValueBeanDaoConfig = daoConfigMap.get(GasValueBeanDao.class).clone(); + gasValueBeanDaoConfig.initIdentityScope(type); - cameraPointBeanDao = new CameraPointBeanDao(cameraPointBeanDaoConfig, this); + gasValueBeanDao = new GasValueBeanDao(gasValueBeanDaoConfig, this); - registerDao(CameraPointBean.class, cameraPointBeanDao); + registerDao(GasValueBean.class, gasValueBeanDao); } public void clear() { - cameraPointBeanDaoConfig.clearIdentityScope(); + gasValueBeanDaoConfig.clearIdentityScope(); } - public CameraPointBeanDao getCameraPointBeanDao() { - return cameraPointBeanDao; + public GasValueBeanDao getGasValueBeanDao() { + return gasValueBeanDao; } } diff --git a/app/src/main/java/com/casic/endoscope/greendao/GasValueBeanDao.java b/app/src/main/java/com/casic/endoscope/greendao/GasValueBeanDao.java new file mode 100644 index 0000000..5149375 --- /dev/null +++ b/app/src/main/java/com/casic/endoscope/greendao/GasValueBeanDao.java @@ -0,0 +1,149 @@ +package com.casic.endoscope.greendao; + +import android.database.Cursor; +import android.database.sqlite.SQLiteStatement; + +import com.casic.endoscope.bean.GasValueBean; + +import org.greenrobot.greendao.AbstractDao; +import org.greenrobot.greendao.Property; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.database.DatabaseStatement; +import org.greenrobot.greendao.internal.DaoConfig; + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. +/** + * DAO for table "GAS_VALUE_BEAN". +*/ +public class GasValueBeanDao extends AbstractDao { + + public static final String TABLENAME = "GAS_VALUE_BEAN"; + + /** + * Properties of entity GasValueBean.
+ * Can be used for QueryBuilder and for referencing column names. + */ + public static class Properties { + public final static Property Id = new Property(0, Long.class, "id", true, "_id"); + public final static Property Time = new Property(1, String.class, "time", false, "TIME"); + public final static Property Value = new Property(2, int.class, "value", false, "VALUE"); + public final static Property Location = new Property(3, String.class, "location", false, "LOCATION"); + } + + + public GasValueBeanDao(DaoConfig config) { + super(config); + } + + public GasValueBeanDao(DaoConfig config, DaoSession daoSession) { + super(config, daoSession); + } + + /** Creates the underlying database table. */ + public static void createTable(Database db, boolean ifNotExists) { + String constraint = ifNotExists? "IF NOT EXISTS ": ""; + db.execSQL("CREATE TABLE " + constraint + "\"GAS_VALUE_BEAN\" (" + // + "\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id + "\"TIME\" TEXT," + // 1: time + "\"VALUE\" INTEGER NOT NULL ," + // 2: value + "\"LOCATION\" TEXT);"); // 3: location + } + + /** Drops the underlying database table. */ + public static void dropTable(Database db, boolean ifExists) { + String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"GAS_VALUE_BEAN\""; + db.execSQL(sql); + } + + @Override + protected final void bindValues(DatabaseStatement stmt, GasValueBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String time = entity.getTime(); + if (time != null) { + stmt.bindString(2, time); + } + stmt.bindLong(3, entity.getValue()); + + String location = entity.getLocation(); + if (location != null) { + stmt.bindString(4, location); + } + } + + @Override + protected final void bindValues(SQLiteStatement stmt, GasValueBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String time = entity.getTime(); + if (time != null) { + stmt.bindString(2, time); + } + stmt.bindLong(3, entity.getValue()); + + String location = entity.getLocation(); + if (location != null) { + stmt.bindString(4, location); + } + } + + @Override + public Long readKey(Cursor cursor, int offset) { + return cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0); + } + + @Override + public GasValueBean readEntity(Cursor cursor, int offset) { + GasValueBean entity = new GasValueBean( // + cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id + cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // time + cursor.getInt(offset + 2), // value + cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3) // location + ); + return entity; + } + + @Override + public void readEntity(Cursor cursor, GasValueBean entity, int offset) { + entity.setId(cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0)); + entity.setTime(cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1)); + entity.setValue(cursor.getInt(offset + 2)); + entity.setLocation(cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3)); + } + + @Override + protected final Long updateKeyAfterInsert(GasValueBean entity, long rowId) { + entity.setId(rowId); + return rowId; + } + + @Override + public Long getKey(GasValueBean entity) { + if(entity != null) { + return entity.getId(); + } else { + return null; + } + } + + @Override + public boolean hasKey(GasValueBean entity) { + return entity.getId() != null; + } + + @Override + protected final boolean isEntityUpdateable() { + return true; + } + +} diff --git a/app/src/main/java/com/casic/endoscope/utils/DataBaseManager.kt b/app/src/main/java/com/casic/endoscope/utils/DataBaseManager.kt index a593a5b..c683db1 100644 --- a/app/src/main/java/com/casic/endoscope/utils/DataBaseManager.kt +++ b/app/src/main/java/com/casic/endoscope/utils/DataBaseManager.kt @@ -1,8 +1,6 @@ package com.casic.endoscope.utils import com.casic.endoscope.base.BaseApplication -import com.casic.endoscope.bean.CameraPointBean -import com.casic.endoscope.greendao.CameraPointBeanDao class DataBaseManager private constructor() { @@ -13,31 +11,5 @@ } } - private var cameraPointDao = BaseApplication.get().getDaoSession().cameraPointBeanDao - - fun cacheCameraPoint(step: Int, h: Int, v: Int) { - val bean = CameraPointBean() - bean.step = step - bean.hAngle = h - bean.vAngle = v - cameraPointDao.insert(bean) - } - - fun deleteCameraPoints(beans: MutableList) { - beans.forEach { - cameraPointDao.delete(it) - } - } - - fun deleteAllCameraPoint() { - cameraPointDao.deleteAll() - } - - fun queryCameraPointById(id: Long): CameraPointBean { - return cameraPointDao.queryBuilder() - .where(CameraPointBeanDao.Properties.Id.eq(id)) - .unique() - } - - fun loadAllCameraPoint(): MutableList = cameraPointDao.loadAll() + private var gasValueBeanDao = BaseApplication.get().getDaoSession().gasValueBeanDao } \ No newline at end of file diff --git a/app/src/main/java/com/casic/endoscope/utils/EndoscopeDevOpenHelper.kt b/app/src/main/java/com/casic/endoscope/utils/EndoscopeDevOpenHelper.kt index 507b1ff..fd87f0f 100644 --- a/app/src/main/java/com/casic/endoscope/utils/EndoscopeDevOpenHelper.kt +++ b/app/src/main/java/com/casic/endoscope/utils/EndoscopeDevOpenHelper.kt @@ -2,8 +2,8 @@ import android.content.Context import android.database.sqlite.SQLiteDatabase.CursorFactory -import com.casic.endoscope.greendao.CameraPointBeanDao import com.casic.endoscope.greendao.DaoMaster +import com.casic.endoscope.greendao.GasValueBeanDao import com.github.yuweiguocn.library.greendao.MigrationHelper import com.github.yuweiguocn.library.greendao.MigrationHelper.ReCreateAllTableListener import org.greenrobot.greendao.database.Database @@ -22,7 +22,7 @@ DaoMaster.dropAllTables(db, ifExists) } }, - CameraPointBeanDao::class.java + GasValueBeanDao::class.java ) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/endoscope/view/MainActivity.kt b/app/src/main/java/com/casic/endoscope/view/MainActivity.kt index 0fe757e..c4509b0 100644 --- a/app/src/main/java/com/casic/endoscope/view/MainActivity.kt +++ b/app/src/main/java/com/casic/endoscope/view/MainActivity.kt @@ -15,8 +15,6 @@ import android.view.SurfaceHolder import android.view.View import androidx.lifecycle.lifecycleScope -import com.casic.endoscope.adapter.CameraPointAdapter -import com.casic.endoscope.bean.CameraPointBean import com.casic.endoscope.databinding.ActivityMainBinding import com.casic.endoscope.extensions.check import com.casic.endoscope.extensions.convertValue @@ -28,14 +26,12 @@ import com.casic.endoscope.extensions.init import com.casic.endoscope.extensions.toTime import com.casic.endoscope.service.VideoTranscodeService -import com.casic.endoscope.utils.DataBaseManager import com.casic.endoscope.utils.ProjectConstant import com.casic.endoscope.utils.ble.BleDeviceManager import com.casic.endoscope.utils.ble.OnDeviceConnectListener import com.casic.endoscope.utils.ble.OnDeviceDiscoveredListener import com.casic.endoscope.utils.hk.MessageCodeHub import com.casic.endoscope.utils.hk.SDKGuider -import com.casic.endoscope.widgets.AddCameraPointDialog import com.casic.endoscope.widgets.BluetoothDeviceDialog import com.casic.endoscope.widgets.LineChartMarkerView import com.github.mikephil.charting.data.Entry @@ -55,10 +51,8 @@ import com.pengxh.kt.lite.extensions.timestampToTime import com.pengxh.kt.lite.utils.LoadingDialogHub import com.pengxh.kt.lite.utils.WeakReferenceHandler -import com.pengxh.kt.lite.widget.SteeringWheelView import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch -import kotlinx.coroutines.withContext import java.text.SimpleDateFormat import java.util.Date import java.util.Locale @@ -101,17 +95,11 @@ //焦距按钮是否已松开 private var isScaleButtonUp = true - //是否拍照成功 - private var isCaptureSuccess = true - private var timer: Timer? = null private var timerTask: TimerTask? = null private var seconds = 0L - private var dataBeans: MutableList = ArrayList() - private var selectedItems: MutableList = ArrayList() private var inputVideoPath = "" private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var dataAdapter: CameraPointAdapter private lateinit var serviceIntent: Intent private lateinit var dataSet: LineDataSet private lateinit var lineData: LineData @@ -123,8 +111,6 @@ override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) - dataBeans = DataBaseManager.get.loadAllCameraPoint() - //显示数据 weakReferenceHandler.sendEmptyMessage(messageCode) @@ -147,13 +133,7 @@ override fun handleMessage(msg: Message): Boolean { if (msg.what == messageCode) { //绑定数据 - dataAdapter = CameraPointAdapter(this, dataBeans) - binding.recyclerView.adapter = dataAdapter - dataAdapter.setOnItemCheckedListener(object : CameraPointAdapter.OnItemCheckedListener { - override fun onItemChecked(position: Int, items: ArrayList) { - selectedItems = items - } - }) + } return true } @@ -209,6 +189,180 @@ } } + binding.upScaleButton.setOnTouchListener { _, event -> + when (event.action) { + MotionEvent.ACTION_DOWN -> { + if (isPreviewSuccess && isScaleButtonUp) { + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_IN, 0) + isScaleButtonUp = false + } + } + + MotionEvent.ACTION_UP -> { + isScaleButtonUp = true + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_IN, 1) + } + } + false + } + + binding.downScaleButton.setOnTouchListener { _, event -> + when (event.action) { + MotionEvent.ACTION_DOWN -> { + if (isPreviewSuccess && isScaleButtonUp) { + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_OUT, 0) + isScaleButtonUp = false + } + } + + MotionEvent.ACTION_UP -> { + isScaleButtonUp = true + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_OUT, 1) + } + } + false + } + + binding.topButton.setOnTouchListener { _, motionEvent -> + when (motionEvent.action) { + MotionEvent.ACTION_DOWN -> { + if (isPreviewSuccess && isActionUp) { + hkSDK.NET_DVR_PTZControlWithSpeed( + previewHandle, PTZCommand.TILT_UP, 0, selectedSpeed + ) + isActionUp = false + } + } + + MotionEvent.ACTION_UP -> { + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.TILT_UP, 1) + isActionUp = true + } + } + false + } + + binding.centerButton.setOnClickListener { + if (!isPreviewSuccess) { + val deviceItem = SDKGuider.sdkGuider.devManageGuider.DeviceItem() + deviceItem.szDevName = "" + deviceItem.devNetInfo = SDKGuider.sdkGuider.devManageGuider.DevNetInfo( + ProjectConstant.HK_NET_IP, + ProjectConstant.HK_NET_PORT, + ProjectConstant.HK_NET_USERNAME, + ProjectConstant.HK_NET_PASSWORD + ) + if (deviceItem.szDevName.isEmpty()) { + deviceItem.szDevName = deviceItem.devNetInfo.szIp + } + val loginV40Jna = SDKGuider.sdkGuider.devManageGuider.login_v40_jna( + deviceItem.szDevName, deviceItem.devNetInfo + ) + if (loginV40Jna) { + //配置设备通道 + try { + val deviceInfo = SDKGuider.sdkGuider.devManageGuider.devList[0] + returnUserId = deviceInfo.szUserId + + aChannelNum = + deviceInfo.deviceInfoV40_jna.struDeviceV30.byChanNum.toInt() + startAChannel = + deviceInfo.deviceInfoV40_jna.struDeviceV30.byStartChan.toInt() + + dChannelNum = + deviceInfo.deviceInfoV40_jna.struDeviceV30.byIPChanNum + deviceInfo.deviceInfoV40_jna.struDeviceV30.byHighDChanNum * 256 + startDChannel = + deviceInfo.deviceInfoV40_jna.struDeviceV30.byStartChan.toInt() + + var iAnalogStartChan = startAChannel + var iDigitalStartChan = startDChannel + + val channelList = ArrayList() + + for (i in 0 until aChannelNum) { + channelList.add("ACamera_$iAnalogStartChan") + iAnalogStartChan++ + } + + for (i in 0 until dChannelNum) { + channelList.add("DCamera_$iDigitalStartChan") + iDigitalStartChan++ + } + selectChannel = Integer.valueOf(channelList[0].getChannel()) + + val streamList = ArrayList() + streamList.add("main_stream") + streamList.add("sub_stream") + streamList.add("third_stream") + + //开始预览 + if (previewHandle != -1) { + SDKGuider.sdkGuider.devPreviewGuider.RealPlay_Stop_jni(previewHandle) + } + val strutPlayInfo = NET_DVR_PREVIEWINFO() + strutPlayInfo.lChannel = selectChannel + strutPlayInfo.dwStreamType = 1 + strutPlayInfo.bBlocked = 1 + strutPlayInfo.hHwnd = binding.surfaceView.holder + previewHandle = SDKGuider.sdkGuider.devPreviewGuider.RealPlay_V40_jni( + returnUserId, strutPlayInfo, null + ) + if (previewHandle < 0) { + Log.d(kTag, "initEvent: Err:${MessageCodeHub.getErrorCode()}") + return@setOnClickListener + } + isPreviewSuccess = true + "预览开启成功".show(context) + //开始计时 + timer = Timer() + timerTask = object : TimerTask() { + override fun run() { + seconds++ + lifecycleScope.launch(Dispatchers.Main) { + binding.runningTimeView.text = seconds.toTime() + } + } + } + timer?.schedule(timerTask, 0, 1000) + } catch (e: IndexOutOfBoundsException) { + e.printStackTrace() + "设备未正常连接,无法开启预览".show(context) + } + } else { + "设备登陆失败".show(context) + } + } else { + if (!SDKGuider.sdkGuider.devPreviewGuider.RealPlay_Stop_jni(previewHandle)) { + return@setOnClickListener + } + previewHandle = -1 + isPreviewSuccess = false + "预览关闭成功".show(context) + //停止计时 + timerTask?.cancel() + timer?.cancel() + } + } + + binding.bottomButton.setOnTouchListener { _, motionEvent -> + when (motionEvent.action) { + MotionEvent.ACTION_DOWN -> { + if (isPreviewSuccess && isActionUp) { + hkSDK.NET_DVR_PTZControlWithSpeed( + previewHandle, PTZCommand.TILT_DOWN, 0, selectedSpeed + ) + isActionUp = false + } + } + + MotionEvent.ACTION_UP -> { + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.TILT_DOWN, 1) + isActionUp = true + } + } + false + } + //单张拍照 binding.imageButton.setOnClickListener { if (isPreviewSuccess) { @@ -252,278 +406,8 @@ true } - //连续拍照 - binding.multipleImageButton.setOnClickListener { - if (dataBeans.isEmpty()) { - "请先设置连续拍照步骤".show(this) - return@setOnClickListener - } - if (isPreviewSuccess) { - lifecycleScope.launch(Dispatchers.IO) { - dataBeans.forEach { - //再拍照 - if (isCaptureSuccess) { - isCaptureSuccess = false - - //先执行角度 - executeAngle(it.hAngle, it.vAngle) - - withContext(Dispatchers.Main) { - "抓取步骤${it.step}画面".show(context) - } - - val strJpeg = NET_DVR_JPEGPARA() - strJpeg.wPicQuality = 1 - strJpeg.wPicSize = 2 - - val imagePath = - "/${createImageFileDir()}/${timeFormat.format(Date())}.png" - hkSDK.NET_DVR_CaptureJPEGPicture( - returnUserId, selectChannel, strJpeg, imagePath - ) - - isCaptureSuccess = MessageCodeHub.getErrorCode() == 0 - } - } - withContext(Dispatchers.Main) { - "连续抓取画面完成".show(context) - } - } - } else { - "摄像头预览未打开,无法拍照".show(this) - } - } - - binding.addButton.setOnClickListener { - val step = if (dataBeans.isEmpty()) { - 0 - } else { - dataBeans.last().step - } - AddCameraPointDialog.Builder().setContext(this).setLastStep(step) - .setNegativeButton("取消").setPositiveButton("添加") - .setOnDialogButtonClickListener(object : - AddCameraPointDialog.OnDialogButtonClickListener { - override fun onConfirmClick(step: Int, hAngle: Int, vAngle: Int) { - DataBaseManager.get.cacheCameraPoint(step, hAngle, vAngle) - dataBeans = DataBaseManager.get.loadAllCameraPoint() - dataAdapter.setRefreshData(dataBeans) - } - - override fun onCancelClick() { - - } - }).build().show() - } - - binding.deleteButton.setOnClickListener { - if (selectedItems.isEmpty()) { - "请先选择要删除的步骤".show(this) - return@setOnClickListener - } - DataBaseManager.get.deleteCameraPoints(selectedItems) - dataBeans = DataBaseManager.get.loadAllCameraPoint() - dataAdapter.setRefreshData(dataBeans) - selectedItems.clear() - } - - binding.steeringWheelView.setOnWheelTouchListener(object : - SteeringWheelView.OnWheelTouchListener { - override fun onCenterClicked() { - if (!isPreviewSuccess) { - val deviceItem = SDKGuider.sdkGuider.devManageGuider.DeviceItem() - deviceItem.szDevName = "" - deviceItem.devNetInfo = SDKGuider.sdkGuider.devManageGuider.DevNetInfo( - ProjectConstant.HK_NET_IP, - ProjectConstant.HK_NET_PORT, - ProjectConstant.HK_NET_USERNAME, - ProjectConstant.HK_NET_PASSWORD - ) - if (deviceItem.szDevName.isEmpty()) { - deviceItem.szDevName = deviceItem.devNetInfo.szIp - } - val loginV40Jna = SDKGuider.sdkGuider.devManageGuider.login_v40_jna( - deviceItem.szDevName, deviceItem.devNetInfo - ) - if (loginV40Jna) { - //配置设备通道 - try { - val deviceInfo = SDKGuider.sdkGuider.devManageGuider.devList[0] - returnUserId = deviceInfo.szUserId - - aChannelNum = - deviceInfo.deviceInfoV40_jna.struDeviceV30.byChanNum.toInt() - startAChannel = - deviceInfo.deviceInfoV40_jna.struDeviceV30.byStartChan.toInt() - - dChannelNum = - deviceInfo.deviceInfoV40_jna.struDeviceV30.byIPChanNum + deviceInfo.deviceInfoV40_jna.struDeviceV30.byHighDChanNum * 256 - startDChannel = - deviceInfo.deviceInfoV40_jna.struDeviceV30.byStartChan.toInt() - - var iAnalogStartChan = startAChannel - var iDigitalStartChan = startDChannel - - val channelList = ArrayList() - - for (i in 0 until aChannelNum) { - channelList.add("ACamera_$iAnalogStartChan") - iAnalogStartChan++ - } - - for (i in 0 until dChannelNum) { - channelList.add("DCamera_$iDigitalStartChan") - iDigitalStartChan++ - } - selectChannel = Integer.valueOf(channelList[0].getChannel()) - - val streamList = ArrayList() - streamList.add("main_stream") - streamList.add("sub_stream") - streamList.add("third_stream") - - //开始预览 - if (previewHandle != -1) { - SDKGuider.sdkGuider.devPreviewGuider.RealPlay_Stop_jni(previewHandle) - } - val strutPlayInfo = NET_DVR_PREVIEWINFO() - strutPlayInfo.lChannel = selectChannel - strutPlayInfo.dwStreamType = 1 - strutPlayInfo.bBlocked = 1 - strutPlayInfo.hHwnd = binding.surfaceView.holder - previewHandle = SDKGuider.sdkGuider.devPreviewGuider.RealPlay_V40_jni( - returnUserId, strutPlayInfo, null - ) - if (previewHandle < 0) { - Log.d(kTag, "initEvent: Err:${MessageCodeHub.getErrorCode()}") - return - } - isPreviewSuccess = true - "预览开启成功".show(context) - //开始计时 - timer = Timer() - timerTask = object : TimerTask() { - override fun run() { - seconds++ - lifecycleScope.launch(Dispatchers.Main) { - binding.runningTimeView.text = seconds.toTime() - } - } - } - timer?.schedule(timerTask, 0, 1000) - } catch (e: IndexOutOfBoundsException) { - e.printStackTrace() - "设备未正常连接,无法开启预览".show(context) - } - } else { - "设备登陆失败".show(context) - } - } else { - if (!SDKGuider.sdkGuider.devPreviewGuider.RealPlay_Stop_jni(previewHandle)) { - return - } - previewHandle = -1 - isPreviewSuccess = false - "预览关闭成功".show(context) - //停止计时 - timerTask?.cancel() - timer?.cancel() - } - } - - override fun onLeftTurn() { - if (isPreviewSuccess && isActionUp) { - hkSDK.NET_DVR_PTZControlWithSpeed( - previewHandle, PTZCommand.PAN_LEFT, 0, selectedSpeed - ) - isActionUp = false - } - } - - override fun onTopTurn() { - if (isPreviewSuccess && isActionUp) { - hkSDK.NET_DVR_PTZControlWithSpeed( - previewHandle, PTZCommand.TILT_UP, 0, selectedSpeed - ) - isActionUp = false - } - } - - override fun onRightTurn() { - if (isPreviewSuccess && isActionUp) { - hkSDK.NET_DVR_PTZControlWithSpeed( - previewHandle, PTZCommand.PAN_RIGHT, 0, selectedSpeed - ) - isActionUp = false - } - } - - override fun onBottomTurn() { - if (isPreviewSuccess && isActionUp) { - hkSDK.NET_DVR_PTZControlWithSpeed( - previewHandle, PTZCommand.TILT_DOWN, 0, selectedSpeed - ) - isActionUp = false - } - } - - override fun onActionTurnUp(dir: SteeringWheelView.Direction) { - when (dir) { - SteeringWheelView.Direction.LEFT -> { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.PAN_LEFT, 1) - isActionUp = true - } - - SteeringWheelView.Direction.TOP -> { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.TILT_UP, 1) - isActionUp = true - } - - SteeringWheelView.Direction.RIGHT -> { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.PAN_RIGHT, 1) - isActionUp = true - } - - SteeringWheelView.Direction.BOTTOM -> { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.TILT_DOWN, 1) - isActionUp = true - } - } - } - }) - - binding.upScaleButton.setOnTouchListener { _, event -> - when (event.action) { - MotionEvent.ACTION_DOWN -> { - if (isPreviewSuccess && isScaleButtonUp) { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_IN, 0) - isScaleButtonUp = false - } - } - - MotionEvent.ACTION_UP -> { - isScaleButtonUp = true - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_IN, 1) - } - } - false - } - - binding.downScaleButton.setOnTouchListener { _, event -> - when (event.action) { - MotionEvent.ACTION_DOWN -> { - if (isPreviewSuccess && isScaleButtonUp) { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_OUT, 0) - isScaleButtonUp = false - } - } - - MotionEvent.ACTION_UP -> { - isScaleButtonUp = true - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_OUT, 1) - } - } - false + binding.resetButton.setOnClickListener { + executeAngle(0, 0) } } diff --git a/app/src/main/res/drawable/bg_solid_layout_blue_10.xml b/app/src/main/res/drawable/bg_solid_layout_blue_10.xml new file mode 100644 index 0000000..b7e06e3 --- /dev/null +++ b/app/src/main/res/drawable/bg_solid_layout_blue_10.xml @@ -0,0 +1,7 @@ + + + + + + \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index c2a2c53..64d4d0c 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -72,7 +72,7 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5.4' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.8' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.cardview:cardview:1.0.0' diff --git a/app/src/main/java/com/casic/endoscope/adapter/CameraPointAdapter.kt b/app/src/main/java/com/casic/endoscope/adapter/CameraPointAdapter.kt deleted file mode 100644 index fe404b2..0000000 --- a/app/src/main/java/com/casic/endoscope/adapter/CameraPointAdapter.kt +++ /dev/null @@ -1,78 +0,0 @@ -package com.casic.endoscope.adapter - -import android.annotation.SuppressLint -import android.content.Context -import android.graphics.Color -import android.view.LayoutInflater -import android.view.ViewGroup -import android.widget.LinearLayout -import androidx.recyclerview.widget.RecyclerView -import com.casic.endoscope.R -import com.casic.endoscope.bean.CameraPointBean -import com.pengxh.kt.lite.adapter.ViewHolder -import com.pengxh.kt.lite.extensions.convertColor - -class CameraPointAdapter( - private val context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var multipleSelected = mutableSetOf() - private var selectedItems = ArrayList() - - override fun getItemCount(): Int = dataRows.size - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { - return ViewHolder( - LayoutInflater.from(context).inflate(R.layout.item_point_list_rv, parent, false) - ) - } - - @SuppressLint("NotifyDataSetChanged") - fun setRefreshData(dataRows: MutableList) { - this.dataRows.clear() - this.dataRows.addAll(dataRows) - notifyDataSetChanged() - multipleSelected.clear() - selectedItems.clear() - } - - override fun onBindViewHolder(holder: ViewHolder, position: Int) { - val item = dataRows[position] - holder.setText(R.id.stepNameView, "步骤 ${item.step}") - .setText(R.id.hAngleView, "水平角度 ${item.hAngle}°") - .setText(R.id.vAngleView, "垂直角度 ${item.vAngle}°") - - val linearLayout = holder.itemView.findViewById(R.id.rootView) - //item背景色 - if (position % 2 == 0) { - linearLayout.setBackgroundColor(Color.parseColor("#C8E3F4")) - } else { - linearLayout.setBackgroundColor(R.color.backgroundColor.convertColor(context)) - } - - holder.itemView.isSelected = multipleSelected.contains(position) - holder.itemView.setOnClickListener { - if (multipleSelected.contains(position)) { - multipleSelected.remove(position) - selectedItems.remove(dataRows[position]) - holder.itemView.isSelected = false - } else { - multipleSelected.add(position) - selectedItems.add(dataRows[position]) - holder.itemView.isSelected = true - } - - itemCheckedListener?.onItemChecked(position, selectedItems) - } - } - - private var itemCheckedListener: OnItemCheckedListener? = null - - interface OnItemCheckedListener { - fun onItemChecked(position: Int, items: ArrayList) - } - - fun setOnItemCheckedListener(listener: OnItemCheckedListener) { - itemCheckedListener = listener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/endoscope/bean/CameraPointBean.java b/app/src/main/java/com/casic/endoscope/bean/CameraPointBean.java deleted file mode 100644 index 3a20d82..0000000 --- a/app/src/main/java/com/casic/endoscope/bean/CameraPointBean.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.casic.endoscope.bean; - -import org.greenrobot.greendao.annotation.Entity; -import org.greenrobot.greendao.annotation.Generated; -import org.greenrobot.greendao.annotation.Id; - -/** - * 必须是java,不能是kt - */ -@Entity -public class CameraPointBean { - - @Id(autoincrement = true) - private Long id;//主键自增 - - private int step;//步骤序号 - private int hAngle;//水平角度 - private int vAngle;//垂直角度 - - @Generated(hash = 1436018650) - public CameraPointBean(Long id, int step, int hAngle, int vAngle) { - this.id = id; - this.step = step; - this.hAngle = hAngle; - this.vAngle = vAngle; - } - - @Generated(hash = 44086073) - public CameraPointBean() { - } - - public Long getId() { - return this.id; - } - - public void setId(Long id) { - this.id = id; - } - - public int getStep() { - return this.step; - } - - public void setStep(int step) { - this.step = step; - } - - public int getHAngle() { - return this.hAngle; - } - - public void setHAngle(int hAngle) { - this.hAngle = hAngle; - } - - public int getVAngle() { - return this.vAngle; - } - - public void setVAngle(int vAngle) { - this.vAngle = vAngle; - } -} diff --git a/app/src/main/java/com/casic/endoscope/bean/GasValueBean.java b/app/src/main/java/com/casic/endoscope/bean/GasValueBean.java new file mode 100644 index 0000000..6537b9a --- /dev/null +++ b/app/src/main/java/com/casic/endoscope/bean/GasValueBean.java @@ -0,0 +1,63 @@ +package com.casic.endoscope.bean; + +import org.greenrobot.greendao.annotation.Entity; +import org.greenrobot.greendao.annotation.Generated; +import org.greenrobot.greendao.annotation.Id; + +/** + * 必须是java,不能是kt + * 甲烷浓度表结构 + */ +@Entity +public class GasValueBean { + @Id(autoincrement = true) + private Long id;//主键自增 + + private String time;//采集浓度的时间 + private int value;//采集的浓度 + private String location;//浓度采集点位置 + + @Generated(hash = 663679791) + public GasValueBean(Long id, String time, int value, String location) { + this.id = id; + this.time = time; + this.value = value; + this.location = location; + } + + @Generated(hash = 291409217) + public GasValueBean() { + } + + public Long getId() { + return this.id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getTime() { + return this.time; + } + + public void setTime(String time) { + this.time = time; + } + + public int getValue() { + return this.value; + } + + public void setValue(int value) { + this.value = value; + } + + public String getLocation() { + return this.location; + } + + public void setLocation(String location) { + this.location = location; + } +} diff --git a/app/src/main/java/com/casic/endoscope/greendao/CameraPointBeanDao.java b/app/src/main/java/com/casic/endoscope/greendao/CameraPointBeanDao.java deleted file mode 100644 index 11bc932..0000000 --- a/app/src/main/java/com/casic/endoscope/greendao/CameraPointBeanDao.java +++ /dev/null @@ -1,138 +0,0 @@ -package com.casic.endoscope.greendao; - -import android.database.Cursor; -import android.database.sqlite.SQLiteStatement; - -import com.casic.endoscope.bean.CameraPointBean; - -import org.greenrobot.greendao.AbstractDao; -import org.greenrobot.greendao.Property; -import org.greenrobot.greendao.database.Database; -import org.greenrobot.greendao.database.DatabaseStatement; -import org.greenrobot.greendao.internal.DaoConfig; - -// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. - -/** - * DAO for table "CAMERA_POINT_BEAN". - */ -public class CameraPointBeanDao extends AbstractDao { - - public static final String TABLENAME = "CAMERA_POINT_BEAN"; - - /** - * Properties of entity CameraPointBean.
- * Can be used for QueryBuilder and for referencing column names. - */ - public static class Properties { - public final static Property Id = new Property(0, Long.class, "id", true, "_id"); - public final static Property Step = new Property(1, int.class, "step", false, "STEP"); - public final static Property HAngle = new Property(2, int.class, "hAngle", false, "H_ANGLE"); - public final static Property VAngle = new Property(3, int.class, "vAngle", false, "V_ANGLE"); - } - - - public CameraPointBeanDao(DaoConfig config) { - super(config); - } - - public CameraPointBeanDao(DaoConfig config, DaoSession daoSession) { - super(config, daoSession); - } - - /** - * Creates the underlying database table. - */ - public static void createTable(Database db, boolean ifNotExists) { - String constraint = ifNotExists ? "IF NOT EXISTS " : ""; - db.execSQL("CREATE TABLE " + constraint + "\"CAMERA_POINT_BEAN\" (" + // - "\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id - "\"STEP\" INTEGER NOT NULL ," + // 1: step - "\"H_ANGLE\" INTEGER NOT NULL ," + // 2: hAngle - "\"V_ANGLE\" INTEGER NOT NULL );"); // 3: vAngle - } - - /** - * Drops the underlying database table. - */ - public static void dropTable(Database db, boolean ifExists) { - String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"CAMERA_POINT_BEAN\""; - db.execSQL(sql); - } - - @Override - protected final void bindValues(DatabaseStatement stmt, CameraPointBean entity) { - stmt.clearBindings(); - - Long id = entity.getId(); - if (id != null) { - stmt.bindLong(1, id); - } - stmt.bindLong(2, entity.getStep()); - stmt.bindLong(3, entity.getHAngle()); - stmt.bindLong(4, entity.getVAngle()); - } - - @Override - protected final void bindValues(SQLiteStatement stmt, CameraPointBean entity) { - stmt.clearBindings(); - - Long id = entity.getId(); - if (id != null) { - stmt.bindLong(1, id); - } - stmt.bindLong(2, entity.getStep()); - stmt.bindLong(3, entity.getHAngle()); - stmt.bindLong(4, entity.getVAngle()); - } - - @Override - public Long readKey(Cursor cursor, int offset) { - return cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0); - } - - @Override - public CameraPointBean readEntity(Cursor cursor, int offset) { - CameraPointBean entity = new CameraPointBean( // - cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id - cursor.getInt(offset + 1), // step - cursor.getInt(offset + 2), // hAngle - cursor.getInt(offset + 3) // vAngle - ); - return entity; - } - - @Override - public void readEntity(Cursor cursor, CameraPointBean entity, int offset) { - entity.setId(cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0)); - entity.setStep(cursor.getInt(offset + 1)); - entity.setHAngle(cursor.getInt(offset + 2)); - entity.setVAngle(cursor.getInt(offset + 3)); - } - - @Override - protected final Long updateKeyAfterInsert(CameraPointBean entity, long rowId) { - entity.setId(rowId); - return rowId; - } - - @Override - public Long getKey(CameraPointBean entity) { - if (entity != null) { - return entity.getId(); - } else { - return null; - } - } - - @Override - public boolean hasKey(CameraPointBean entity) { - return entity.getId() != null; - } - - @Override - protected final boolean isEntityUpdateable() { - return true; - } - -} diff --git a/app/src/main/java/com/casic/endoscope/greendao/DaoMaster.java b/app/src/main/java/com/casic/endoscope/greendao/DaoMaster.java index 5d4fa30..a455fd0 100644 --- a/app/src/main/java/com/casic/endoscope/greendao/DaoMaster.java +++ b/app/src/main/java/com/casic/endoscope/greendao/DaoMaster.java @@ -13,25 +13,20 @@ // THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. - /** * Master of DAO (schema version 1): knows all DAOs. */ public class DaoMaster extends AbstractDaoMaster { public static final int SCHEMA_VERSION = 1; - /** - * Creates underlying database table using DAOs. - */ + /** Creates underlying database table using DAOs. */ public static void createAllTables(Database db, boolean ifNotExists) { - CameraPointBeanDao.createTable(db, ifNotExists); + GasValueBeanDao.createTable(db, ifNotExists); } - /** - * Drops underlying database table using DAOs. - */ + /** Drops underlying database table using DAOs. */ public static void dropAllTables(Database db, boolean ifExists) { - CameraPointBeanDao.dropTable(db, ifExists); + GasValueBeanDao.dropTable(db, ifExists); } /** @@ -50,7 +45,7 @@ public DaoMaster(Database db) { super(db, SCHEMA_VERSION); - registerDaoClass(CameraPointBeanDao.class); + registerDaoClass(GasValueBeanDao.class); } public DaoSession newSession() { @@ -80,9 +75,7 @@ } } - /** - * WARNING: Drops all table on Upgrade! Use only during development. - */ + /** WARNING: Drops all table on Upgrade! Use only during development. */ public static class DevOpenHelper extends OpenHelper { public DevOpenHelper(Context context, String name) { super(context, name); diff --git a/app/src/main/java/com/casic/endoscope/greendao/DaoSession.java b/app/src/main/java/com/casic/endoscope/greendao/DaoSession.java index ed2f9c0..259243d 100644 --- a/app/src/main/java/com/casic/endoscope/greendao/DaoSession.java +++ b/app/src/main/java/com/casic/endoscope/greendao/DaoSession.java @@ -1,6 +1,6 @@ package com.casic.endoscope.greendao; -import com.casic.endoscope.bean.CameraPointBean; +import com.casic.endoscope.bean.GasValueBean; import org.greenrobot.greendao.AbstractDao; import org.greenrobot.greendao.AbstractDaoSession; @@ -19,28 +19,28 @@ */ public class DaoSession extends AbstractDaoSession { - private final DaoConfig cameraPointBeanDaoConfig; + private final DaoConfig gasValueBeanDaoConfig; - private final CameraPointBeanDao cameraPointBeanDao; + private final GasValueBeanDao gasValueBeanDao; public DaoSession(Database db, IdentityScopeType type, Map>, DaoConfig> daoConfigMap) { super(db); - cameraPointBeanDaoConfig = daoConfigMap.get(CameraPointBeanDao.class).clone(); - cameraPointBeanDaoConfig.initIdentityScope(type); + gasValueBeanDaoConfig = daoConfigMap.get(GasValueBeanDao.class).clone(); + gasValueBeanDaoConfig.initIdentityScope(type); - cameraPointBeanDao = new CameraPointBeanDao(cameraPointBeanDaoConfig, this); + gasValueBeanDao = new GasValueBeanDao(gasValueBeanDaoConfig, this); - registerDao(CameraPointBean.class, cameraPointBeanDao); + registerDao(GasValueBean.class, gasValueBeanDao); } public void clear() { - cameraPointBeanDaoConfig.clearIdentityScope(); + gasValueBeanDaoConfig.clearIdentityScope(); } - public CameraPointBeanDao getCameraPointBeanDao() { - return cameraPointBeanDao; + public GasValueBeanDao getGasValueBeanDao() { + return gasValueBeanDao; } } diff --git a/app/src/main/java/com/casic/endoscope/greendao/GasValueBeanDao.java b/app/src/main/java/com/casic/endoscope/greendao/GasValueBeanDao.java new file mode 100644 index 0000000..5149375 --- /dev/null +++ b/app/src/main/java/com/casic/endoscope/greendao/GasValueBeanDao.java @@ -0,0 +1,149 @@ +package com.casic.endoscope.greendao; + +import android.database.Cursor; +import android.database.sqlite.SQLiteStatement; + +import com.casic.endoscope.bean.GasValueBean; + +import org.greenrobot.greendao.AbstractDao; +import org.greenrobot.greendao.Property; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.database.DatabaseStatement; +import org.greenrobot.greendao.internal.DaoConfig; + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. +/** + * DAO for table "GAS_VALUE_BEAN". +*/ +public class GasValueBeanDao extends AbstractDao { + + public static final String TABLENAME = "GAS_VALUE_BEAN"; + + /** + * Properties of entity GasValueBean.
+ * Can be used for QueryBuilder and for referencing column names. + */ + public static class Properties { + public final static Property Id = new Property(0, Long.class, "id", true, "_id"); + public final static Property Time = new Property(1, String.class, "time", false, "TIME"); + public final static Property Value = new Property(2, int.class, "value", false, "VALUE"); + public final static Property Location = new Property(3, String.class, "location", false, "LOCATION"); + } + + + public GasValueBeanDao(DaoConfig config) { + super(config); + } + + public GasValueBeanDao(DaoConfig config, DaoSession daoSession) { + super(config, daoSession); + } + + /** Creates the underlying database table. */ + public static void createTable(Database db, boolean ifNotExists) { + String constraint = ifNotExists? "IF NOT EXISTS ": ""; + db.execSQL("CREATE TABLE " + constraint + "\"GAS_VALUE_BEAN\" (" + // + "\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id + "\"TIME\" TEXT," + // 1: time + "\"VALUE\" INTEGER NOT NULL ," + // 2: value + "\"LOCATION\" TEXT);"); // 3: location + } + + /** Drops the underlying database table. */ + public static void dropTable(Database db, boolean ifExists) { + String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"GAS_VALUE_BEAN\""; + db.execSQL(sql); + } + + @Override + protected final void bindValues(DatabaseStatement stmt, GasValueBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String time = entity.getTime(); + if (time != null) { + stmt.bindString(2, time); + } + stmt.bindLong(3, entity.getValue()); + + String location = entity.getLocation(); + if (location != null) { + stmt.bindString(4, location); + } + } + + @Override + protected final void bindValues(SQLiteStatement stmt, GasValueBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String time = entity.getTime(); + if (time != null) { + stmt.bindString(2, time); + } + stmt.bindLong(3, entity.getValue()); + + String location = entity.getLocation(); + if (location != null) { + stmt.bindString(4, location); + } + } + + @Override + public Long readKey(Cursor cursor, int offset) { + return cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0); + } + + @Override + public GasValueBean readEntity(Cursor cursor, int offset) { + GasValueBean entity = new GasValueBean( // + cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id + cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // time + cursor.getInt(offset + 2), // value + cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3) // location + ); + return entity; + } + + @Override + public void readEntity(Cursor cursor, GasValueBean entity, int offset) { + entity.setId(cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0)); + entity.setTime(cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1)); + entity.setValue(cursor.getInt(offset + 2)); + entity.setLocation(cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3)); + } + + @Override + protected final Long updateKeyAfterInsert(GasValueBean entity, long rowId) { + entity.setId(rowId); + return rowId; + } + + @Override + public Long getKey(GasValueBean entity) { + if(entity != null) { + return entity.getId(); + } else { + return null; + } + } + + @Override + public boolean hasKey(GasValueBean entity) { + return entity.getId() != null; + } + + @Override + protected final boolean isEntityUpdateable() { + return true; + } + +} diff --git a/app/src/main/java/com/casic/endoscope/utils/DataBaseManager.kt b/app/src/main/java/com/casic/endoscope/utils/DataBaseManager.kt index a593a5b..c683db1 100644 --- a/app/src/main/java/com/casic/endoscope/utils/DataBaseManager.kt +++ b/app/src/main/java/com/casic/endoscope/utils/DataBaseManager.kt @@ -1,8 +1,6 @@ package com.casic.endoscope.utils import com.casic.endoscope.base.BaseApplication -import com.casic.endoscope.bean.CameraPointBean -import com.casic.endoscope.greendao.CameraPointBeanDao class DataBaseManager private constructor() { @@ -13,31 +11,5 @@ } } - private var cameraPointDao = BaseApplication.get().getDaoSession().cameraPointBeanDao - - fun cacheCameraPoint(step: Int, h: Int, v: Int) { - val bean = CameraPointBean() - bean.step = step - bean.hAngle = h - bean.vAngle = v - cameraPointDao.insert(bean) - } - - fun deleteCameraPoints(beans: MutableList) { - beans.forEach { - cameraPointDao.delete(it) - } - } - - fun deleteAllCameraPoint() { - cameraPointDao.deleteAll() - } - - fun queryCameraPointById(id: Long): CameraPointBean { - return cameraPointDao.queryBuilder() - .where(CameraPointBeanDao.Properties.Id.eq(id)) - .unique() - } - - fun loadAllCameraPoint(): MutableList = cameraPointDao.loadAll() + private var gasValueBeanDao = BaseApplication.get().getDaoSession().gasValueBeanDao } \ No newline at end of file diff --git a/app/src/main/java/com/casic/endoscope/utils/EndoscopeDevOpenHelper.kt b/app/src/main/java/com/casic/endoscope/utils/EndoscopeDevOpenHelper.kt index 507b1ff..fd87f0f 100644 --- a/app/src/main/java/com/casic/endoscope/utils/EndoscopeDevOpenHelper.kt +++ b/app/src/main/java/com/casic/endoscope/utils/EndoscopeDevOpenHelper.kt @@ -2,8 +2,8 @@ import android.content.Context import android.database.sqlite.SQLiteDatabase.CursorFactory -import com.casic.endoscope.greendao.CameraPointBeanDao import com.casic.endoscope.greendao.DaoMaster +import com.casic.endoscope.greendao.GasValueBeanDao import com.github.yuweiguocn.library.greendao.MigrationHelper import com.github.yuweiguocn.library.greendao.MigrationHelper.ReCreateAllTableListener import org.greenrobot.greendao.database.Database @@ -22,7 +22,7 @@ DaoMaster.dropAllTables(db, ifExists) } }, - CameraPointBeanDao::class.java + GasValueBeanDao::class.java ) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/endoscope/view/MainActivity.kt b/app/src/main/java/com/casic/endoscope/view/MainActivity.kt index 0fe757e..c4509b0 100644 --- a/app/src/main/java/com/casic/endoscope/view/MainActivity.kt +++ b/app/src/main/java/com/casic/endoscope/view/MainActivity.kt @@ -15,8 +15,6 @@ import android.view.SurfaceHolder import android.view.View import androidx.lifecycle.lifecycleScope -import com.casic.endoscope.adapter.CameraPointAdapter -import com.casic.endoscope.bean.CameraPointBean import com.casic.endoscope.databinding.ActivityMainBinding import com.casic.endoscope.extensions.check import com.casic.endoscope.extensions.convertValue @@ -28,14 +26,12 @@ import com.casic.endoscope.extensions.init import com.casic.endoscope.extensions.toTime import com.casic.endoscope.service.VideoTranscodeService -import com.casic.endoscope.utils.DataBaseManager import com.casic.endoscope.utils.ProjectConstant import com.casic.endoscope.utils.ble.BleDeviceManager import com.casic.endoscope.utils.ble.OnDeviceConnectListener import com.casic.endoscope.utils.ble.OnDeviceDiscoveredListener import com.casic.endoscope.utils.hk.MessageCodeHub import com.casic.endoscope.utils.hk.SDKGuider -import com.casic.endoscope.widgets.AddCameraPointDialog import com.casic.endoscope.widgets.BluetoothDeviceDialog import com.casic.endoscope.widgets.LineChartMarkerView import com.github.mikephil.charting.data.Entry @@ -55,10 +51,8 @@ import com.pengxh.kt.lite.extensions.timestampToTime import com.pengxh.kt.lite.utils.LoadingDialogHub import com.pengxh.kt.lite.utils.WeakReferenceHandler -import com.pengxh.kt.lite.widget.SteeringWheelView import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch -import kotlinx.coroutines.withContext import java.text.SimpleDateFormat import java.util.Date import java.util.Locale @@ -101,17 +95,11 @@ //焦距按钮是否已松开 private var isScaleButtonUp = true - //是否拍照成功 - private var isCaptureSuccess = true - private var timer: Timer? = null private var timerTask: TimerTask? = null private var seconds = 0L - private var dataBeans: MutableList = ArrayList() - private var selectedItems: MutableList = ArrayList() private var inputVideoPath = "" private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var dataAdapter: CameraPointAdapter private lateinit var serviceIntent: Intent private lateinit var dataSet: LineDataSet private lateinit var lineData: LineData @@ -123,8 +111,6 @@ override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) - dataBeans = DataBaseManager.get.loadAllCameraPoint() - //显示数据 weakReferenceHandler.sendEmptyMessage(messageCode) @@ -147,13 +133,7 @@ override fun handleMessage(msg: Message): Boolean { if (msg.what == messageCode) { //绑定数据 - dataAdapter = CameraPointAdapter(this, dataBeans) - binding.recyclerView.adapter = dataAdapter - dataAdapter.setOnItemCheckedListener(object : CameraPointAdapter.OnItemCheckedListener { - override fun onItemChecked(position: Int, items: ArrayList) { - selectedItems = items - } - }) + } return true } @@ -209,6 +189,180 @@ } } + binding.upScaleButton.setOnTouchListener { _, event -> + when (event.action) { + MotionEvent.ACTION_DOWN -> { + if (isPreviewSuccess && isScaleButtonUp) { + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_IN, 0) + isScaleButtonUp = false + } + } + + MotionEvent.ACTION_UP -> { + isScaleButtonUp = true + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_IN, 1) + } + } + false + } + + binding.downScaleButton.setOnTouchListener { _, event -> + when (event.action) { + MotionEvent.ACTION_DOWN -> { + if (isPreviewSuccess && isScaleButtonUp) { + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_OUT, 0) + isScaleButtonUp = false + } + } + + MotionEvent.ACTION_UP -> { + isScaleButtonUp = true + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_OUT, 1) + } + } + false + } + + binding.topButton.setOnTouchListener { _, motionEvent -> + when (motionEvent.action) { + MotionEvent.ACTION_DOWN -> { + if (isPreviewSuccess && isActionUp) { + hkSDK.NET_DVR_PTZControlWithSpeed( + previewHandle, PTZCommand.TILT_UP, 0, selectedSpeed + ) + isActionUp = false + } + } + + MotionEvent.ACTION_UP -> { + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.TILT_UP, 1) + isActionUp = true + } + } + false + } + + binding.centerButton.setOnClickListener { + if (!isPreviewSuccess) { + val deviceItem = SDKGuider.sdkGuider.devManageGuider.DeviceItem() + deviceItem.szDevName = "" + deviceItem.devNetInfo = SDKGuider.sdkGuider.devManageGuider.DevNetInfo( + ProjectConstant.HK_NET_IP, + ProjectConstant.HK_NET_PORT, + ProjectConstant.HK_NET_USERNAME, + ProjectConstant.HK_NET_PASSWORD + ) + if (deviceItem.szDevName.isEmpty()) { + deviceItem.szDevName = deviceItem.devNetInfo.szIp + } + val loginV40Jna = SDKGuider.sdkGuider.devManageGuider.login_v40_jna( + deviceItem.szDevName, deviceItem.devNetInfo + ) + if (loginV40Jna) { + //配置设备通道 + try { + val deviceInfo = SDKGuider.sdkGuider.devManageGuider.devList[0] + returnUserId = deviceInfo.szUserId + + aChannelNum = + deviceInfo.deviceInfoV40_jna.struDeviceV30.byChanNum.toInt() + startAChannel = + deviceInfo.deviceInfoV40_jna.struDeviceV30.byStartChan.toInt() + + dChannelNum = + deviceInfo.deviceInfoV40_jna.struDeviceV30.byIPChanNum + deviceInfo.deviceInfoV40_jna.struDeviceV30.byHighDChanNum * 256 + startDChannel = + deviceInfo.deviceInfoV40_jna.struDeviceV30.byStartChan.toInt() + + var iAnalogStartChan = startAChannel + var iDigitalStartChan = startDChannel + + val channelList = ArrayList() + + for (i in 0 until aChannelNum) { + channelList.add("ACamera_$iAnalogStartChan") + iAnalogStartChan++ + } + + for (i in 0 until dChannelNum) { + channelList.add("DCamera_$iDigitalStartChan") + iDigitalStartChan++ + } + selectChannel = Integer.valueOf(channelList[0].getChannel()) + + val streamList = ArrayList() + streamList.add("main_stream") + streamList.add("sub_stream") + streamList.add("third_stream") + + //开始预览 + if (previewHandle != -1) { + SDKGuider.sdkGuider.devPreviewGuider.RealPlay_Stop_jni(previewHandle) + } + val strutPlayInfo = NET_DVR_PREVIEWINFO() + strutPlayInfo.lChannel = selectChannel + strutPlayInfo.dwStreamType = 1 + strutPlayInfo.bBlocked = 1 + strutPlayInfo.hHwnd = binding.surfaceView.holder + previewHandle = SDKGuider.sdkGuider.devPreviewGuider.RealPlay_V40_jni( + returnUserId, strutPlayInfo, null + ) + if (previewHandle < 0) { + Log.d(kTag, "initEvent: Err:${MessageCodeHub.getErrorCode()}") + return@setOnClickListener + } + isPreviewSuccess = true + "预览开启成功".show(context) + //开始计时 + timer = Timer() + timerTask = object : TimerTask() { + override fun run() { + seconds++ + lifecycleScope.launch(Dispatchers.Main) { + binding.runningTimeView.text = seconds.toTime() + } + } + } + timer?.schedule(timerTask, 0, 1000) + } catch (e: IndexOutOfBoundsException) { + e.printStackTrace() + "设备未正常连接,无法开启预览".show(context) + } + } else { + "设备登陆失败".show(context) + } + } else { + if (!SDKGuider.sdkGuider.devPreviewGuider.RealPlay_Stop_jni(previewHandle)) { + return@setOnClickListener + } + previewHandle = -1 + isPreviewSuccess = false + "预览关闭成功".show(context) + //停止计时 + timerTask?.cancel() + timer?.cancel() + } + } + + binding.bottomButton.setOnTouchListener { _, motionEvent -> + when (motionEvent.action) { + MotionEvent.ACTION_DOWN -> { + if (isPreviewSuccess && isActionUp) { + hkSDK.NET_DVR_PTZControlWithSpeed( + previewHandle, PTZCommand.TILT_DOWN, 0, selectedSpeed + ) + isActionUp = false + } + } + + MotionEvent.ACTION_UP -> { + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.TILT_DOWN, 1) + isActionUp = true + } + } + false + } + //单张拍照 binding.imageButton.setOnClickListener { if (isPreviewSuccess) { @@ -252,278 +406,8 @@ true } - //连续拍照 - binding.multipleImageButton.setOnClickListener { - if (dataBeans.isEmpty()) { - "请先设置连续拍照步骤".show(this) - return@setOnClickListener - } - if (isPreviewSuccess) { - lifecycleScope.launch(Dispatchers.IO) { - dataBeans.forEach { - //再拍照 - if (isCaptureSuccess) { - isCaptureSuccess = false - - //先执行角度 - executeAngle(it.hAngle, it.vAngle) - - withContext(Dispatchers.Main) { - "抓取步骤${it.step}画面".show(context) - } - - val strJpeg = NET_DVR_JPEGPARA() - strJpeg.wPicQuality = 1 - strJpeg.wPicSize = 2 - - val imagePath = - "/${createImageFileDir()}/${timeFormat.format(Date())}.png" - hkSDK.NET_DVR_CaptureJPEGPicture( - returnUserId, selectChannel, strJpeg, imagePath - ) - - isCaptureSuccess = MessageCodeHub.getErrorCode() == 0 - } - } - withContext(Dispatchers.Main) { - "连续抓取画面完成".show(context) - } - } - } else { - "摄像头预览未打开,无法拍照".show(this) - } - } - - binding.addButton.setOnClickListener { - val step = if (dataBeans.isEmpty()) { - 0 - } else { - dataBeans.last().step - } - AddCameraPointDialog.Builder().setContext(this).setLastStep(step) - .setNegativeButton("取消").setPositiveButton("添加") - .setOnDialogButtonClickListener(object : - AddCameraPointDialog.OnDialogButtonClickListener { - override fun onConfirmClick(step: Int, hAngle: Int, vAngle: Int) { - DataBaseManager.get.cacheCameraPoint(step, hAngle, vAngle) - dataBeans = DataBaseManager.get.loadAllCameraPoint() - dataAdapter.setRefreshData(dataBeans) - } - - override fun onCancelClick() { - - } - }).build().show() - } - - binding.deleteButton.setOnClickListener { - if (selectedItems.isEmpty()) { - "请先选择要删除的步骤".show(this) - return@setOnClickListener - } - DataBaseManager.get.deleteCameraPoints(selectedItems) - dataBeans = DataBaseManager.get.loadAllCameraPoint() - dataAdapter.setRefreshData(dataBeans) - selectedItems.clear() - } - - binding.steeringWheelView.setOnWheelTouchListener(object : - SteeringWheelView.OnWheelTouchListener { - override fun onCenterClicked() { - if (!isPreviewSuccess) { - val deviceItem = SDKGuider.sdkGuider.devManageGuider.DeviceItem() - deviceItem.szDevName = "" - deviceItem.devNetInfo = SDKGuider.sdkGuider.devManageGuider.DevNetInfo( - ProjectConstant.HK_NET_IP, - ProjectConstant.HK_NET_PORT, - ProjectConstant.HK_NET_USERNAME, - ProjectConstant.HK_NET_PASSWORD - ) - if (deviceItem.szDevName.isEmpty()) { - deviceItem.szDevName = deviceItem.devNetInfo.szIp - } - val loginV40Jna = SDKGuider.sdkGuider.devManageGuider.login_v40_jna( - deviceItem.szDevName, deviceItem.devNetInfo - ) - if (loginV40Jna) { - //配置设备通道 - try { - val deviceInfo = SDKGuider.sdkGuider.devManageGuider.devList[0] - returnUserId = deviceInfo.szUserId - - aChannelNum = - deviceInfo.deviceInfoV40_jna.struDeviceV30.byChanNum.toInt() - startAChannel = - deviceInfo.deviceInfoV40_jna.struDeviceV30.byStartChan.toInt() - - dChannelNum = - deviceInfo.deviceInfoV40_jna.struDeviceV30.byIPChanNum + deviceInfo.deviceInfoV40_jna.struDeviceV30.byHighDChanNum * 256 - startDChannel = - deviceInfo.deviceInfoV40_jna.struDeviceV30.byStartChan.toInt() - - var iAnalogStartChan = startAChannel - var iDigitalStartChan = startDChannel - - val channelList = ArrayList() - - for (i in 0 until aChannelNum) { - channelList.add("ACamera_$iAnalogStartChan") - iAnalogStartChan++ - } - - for (i in 0 until dChannelNum) { - channelList.add("DCamera_$iDigitalStartChan") - iDigitalStartChan++ - } - selectChannel = Integer.valueOf(channelList[0].getChannel()) - - val streamList = ArrayList() - streamList.add("main_stream") - streamList.add("sub_stream") - streamList.add("third_stream") - - //开始预览 - if (previewHandle != -1) { - SDKGuider.sdkGuider.devPreviewGuider.RealPlay_Stop_jni(previewHandle) - } - val strutPlayInfo = NET_DVR_PREVIEWINFO() - strutPlayInfo.lChannel = selectChannel - strutPlayInfo.dwStreamType = 1 - strutPlayInfo.bBlocked = 1 - strutPlayInfo.hHwnd = binding.surfaceView.holder - previewHandle = SDKGuider.sdkGuider.devPreviewGuider.RealPlay_V40_jni( - returnUserId, strutPlayInfo, null - ) - if (previewHandle < 0) { - Log.d(kTag, "initEvent: Err:${MessageCodeHub.getErrorCode()}") - return - } - isPreviewSuccess = true - "预览开启成功".show(context) - //开始计时 - timer = Timer() - timerTask = object : TimerTask() { - override fun run() { - seconds++ - lifecycleScope.launch(Dispatchers.Main) { - binding.runningTimeView.text = seconds.toTime() - } - } - } - timer?.schedule(timerTask, 0, 1000) - } catch (e: IndexOutOfBoundsException) { - e.printStackTrace() - "设备未正常连接,无法开启预览".show(context) - } - } else { - "设备登陆失败".show(context) - } - } else { - if (!SDKGuider.sdkGuider.devPreviewGuider.RealPlay_Stop_jni(previewHandle)) { - return - } - previewHandle = -1 - isPreviewSuccess = false - "预览关闭成功".show(context) - //停止计时 - timerTask?.cancel() - timer?.cancel() - } - } - - override fun onLeftTurn() { - if (isPreviewSuccess && isActionUp) { - hkSDK.NET_DVR_PTZControlWithSpeed( - previewHandle, PTZCommand.PAN_LEFT, 0, selectedSpeed - ) - isActionUp = false - } - } - - override fun onTopTurn() { - if (isPreviewSuccess && isActionUp) { - hkSDK.NET_DVR_PTZControlWithSpeed( - previewHandle, PTZCommand.TILT_UP, 0, selectedSpeed - ) - isActionUp = false - } - } - - override fun onRightTurn() { - if (isPreviewSuccess && isActionUp) { - hkSDK.NET_DVR_PTZControlWithSpeed( - previewHandle, PTZCommand.PAN_RIGHT, 0, selectedSpeed - ) - isActionUp = false - } - } - - override fun onBottomTurn() { - if (isPreviewSuccess && isActionUp) { - hkSDK.NET_DVR_PTZControlWithSpeed( - previewHandle, PTZCommand.TILT_DOWN, 0, selectedSpeed - ) - isActionUp = false - } - } - - override fun onActionTurnUp(dir: SteeringWheelView.Direction) { - when (dir) { - SteeringWheelView.Direction.LEFT -> { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.PAN_LEFT, 1) - isActionUp = true - } - - SteeringWheelView.Direction.TOP -> { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.TILT_UP, 1) - isActionUp = true - } - - SteeringWheelView.Direction.RIGHT -> { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.PAN_RIGHT, 1) - isActionUp = true - } - - SteeringWheelView.Direction.BOTTOM -> { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.TILT_DOWN, 1) - isActionUp = true - } - } - } - }) - - binding.upScaleButton.setOnTouchListener { _, event -> - when (event.action) { - MotionEvent.ACTION_DOWN -> { - if (isPreviewSuccess && isScaleButtonUp) { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_IN, 0) - isScaleButtonUp = false - } - } - - MotionEvent.ACTION_UP -> { - isScaleButtonUp = true - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_IN, 1) - } - } - false - } - - binding.downScaleButton.setOnTouchListener { _, event -> - when (event.action) { - MotionEvent.ACTION_DOWN -> { - if (isPreviewSuccess && isScaleButtonUp) { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_OUT, 0) - isScaleButtonUp = false - } - } - - MotionEvent.ACTION_UP -> { - isScaleButtonUp = true - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_OUT, 1) - } - } - false + binding.resetButton.setOnClickListener { + executeAngle(0, 0) } } diff --git a/app/src/main/res/drawable/bg_solid_layout_blue_10.xml b/app/src/main/res/drawable/bg_solid_layout_blue_10.xml new file mode 100644 index 0000000..b7e06e3 --- /dev/null +++ b/app/src/main/res/drawable/bg_solid_layout_blue_10.xml @@ -0,0 +1,7 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_stroke_layout_blue_10.xml b/app/src/main/res/drawable/bg_stroke_layout_blue_10.xml deleted file mode 100644 index d6f55c9..0000000 --- a/app/src/main/res/drawable/bg_stroke_layout_blue_10.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index c2a2c53..64d4d0c 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -72,7 +72,7 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5.4' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.8' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.cardview:cardview:1.0.0' diff --git a/app/src/main/java/com/casic/endoscope/adapter/CameraPointAdapter.kt b/app/src/main/java/com/casic/endoscope/adapter/CameraPointAdapter.kt deleted file mode 100644 index fe404b2..0000000 --- a/app/src/main/java/com/casic/endoscope/adapter/CameraPointAdapter.kt +++ /dev/null @@ -1,78 +0,0 @@ -package com.casic.endoscope.adapter - -import android.annotation.SuppressLint -import android.content.Context -import android.graphics.Color -import android.view.LayoutInflater -import android.view.ViewGroup -import android.widget.LinearLayout -import androidx.recyclerview.widget.RecyclerView -import com.casic.endoscope.R -import com.casic.endoscope.bean.CameraPointBean -import com.pengxh.kt.lite.adapter.ViewHolder -import com.pengxh.kt.lite.extensions.convertColor - -class CameraPointAdapter( - private val context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var multipleSelected = mutableSetOf() - private var selectedItems = ArrayList() - - override fun getItemCount(): Int = dataRows.size - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { - return ViewHolder( - LayoutInflater.from(context).inflate(R.layout.item_point_list_rv, parent, false) - ) - } - - @SuppressLint("NotifyDataSetChanged") - fun setRefreshData(dataRows: MutableList) { - this.dataRows.clear() - this.dataRows.addAll(dataRows) - notifyDataSetChanged() - multipleSelected.clear() - selectedItems.clear() - } - - override fun onBindViewHolder(holder: ViewHolder, position: Int) { - val item = dataRows[position] - holder.setText(R.id.stepNameView, "步骤 ${item.step}") - .setText(R.id.hAngleView, "水平角度 ${item.hAngle}°") - .setText(R.id.vAngleView, "垂直角度 ${item.vAngle}°") - - val linearLayout = holder.itemView.findViewById(R.id.rootView) - //item背景色 - if (position % 2 == 0) { - linearLayout.setBackgroundColor(Color.parseColor("#C8E3F4")) - } else { - linearLayout.setBackgroundColor(R.color.backgroundColor.convertColor(context)) - } - - holder.itemView.isSelected = multipleSelected.contains(position) - holder.itemView.setOnClickListener { - if (multipleSelected.contains(position)) { - multipleSelected.remove(position) - selectedItems.remove(dataRows[position]) - holder.itemView.isSelected = false - } else { - multipleSelected.add(position) - selectedItems.add(dataRows[position]) - holder.itemView.isSelected = true - } - - itemCheckedListener?.onItemChecked(position, selectedItems) - } - } - - private var itemCheckedListener: OnItemCheckedListener? = null - - interface OnItemCheckedListener { - fun onItemChecked(position: Int, items: ArrayList) - } - - fun setOnItemCheckedListener(listener: OnItemCheckedListener) { - itemCheckedListener = listener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/endoscope/bean/CameraPointBean.java b/app/src/main/java/com/casic/endoscope/bean/CameraPointBean.java deleted file mode 100644 index 3a20d82..0000000 --- a/app/src/main/java/com/casic/endoscope/bean/CameraPointBean.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.casic.endoscope.bean; - -import org.greenrobot.greendao.annotation.Entity; -import org.greenrobot.greendao.annotation.Generated; -import org.greenrobot.greendao.annotation.Id; - -/** - * 必须是java,不能是kt - */ -@Entity -public class CameraPointBean { - - @Id(autoincrement = true) - private Long id;//主键自增 - - private int step;//步骤序号 - private int hAngle;//水平角度 - private int vAngle;//垂直角度 - - @Generated(hash = 1436018650) - public CameraPointBean(Long id, int step, int hAngle, int vAngle) { - this.id = id; - this.step = step; - this.hAngle = hAngle; - this.vAngle = vAngle; - } - - @Generated(hash = 44086073) - public CameraPointBean() { - } - - public Long getId() { - return this.id; - } - - public void setId(Long id) { - this.id = id; - } - - public int getStep() { - return this.step; - } - - public void setStep(int step) { - this.step = step; - } - - public int getHAngle() { - return this.hAngle; - } - - public void setHAngle(int hAngle) { - this.hAngle = hAngle; - } - - public int getVAngle() { - return this.vAngle; - } - - public void setVAngle(int vAngle) { - this.vAngle = vAngle; - } -} diff --git a/app/src/main/java/com/casic/endoscope/bean/GasValueBean.java b/app/src/main/java/com/casic/endoscope/bean/GasValueBean.java new file mode 100644 index 0000000..6537b9a --- /dev/null +++ b/app/src/main/java/com/casic/endoscope/bean/GasValueBean.java @@ -0,0 +1,63 @@ +package com.casic.endoscope.bean; + +import org.greenrobot.greendao.annotation.Entity; +import org.greenrobot.greendao.annotation.Generated; +import org.greenrobot.greendao.annotation.Id; + +/** + * 必须是java,不能是kt + * 甲烷浓度表结构 + */ +@Entity +public class GasValueBean { + @Id(autoincrement = true) + private Long id;//主键自增 + + private String time;//采集浓度的时间 + private int value;//采集的浓度 + private String location;//浓度采集点位置 + + @Generated(hash = 663679791) + public GasValueBean(Long id, String time, int value, String location) { + this.id = id; + this.time = time; + this.value = value; + this.location = location; + } + + @Generated(hash = 291409217) + public GasValueBean() { + } + + public Long getId() { + return this.id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getTime() { + return this.time; + } + + public void setTime(String time) { + this.time = time; + } + + public int getValue() { + return this.value; + } + + public void setValue(int value) { + this.value = value; + } + + public String getLocation() { + return this.location; + } + + public void setLocation(String location) { + this.location = location; + } +} diff --git a/app/src/main/java/com/casic/endoscope/greendao/CameraPointBeanDao.java b/app/src/main/java/com/casic/endoscope/greendao/CameraPointBeanDao.java deleted file mode 100644 index 11bc932..0000000 --- a/app/src/main/java/com/casic/endoscope/greendao/CameraPointBeanDao.java +++ /dev/null @@ -1,138 +0,0 @@ -package com.casic.endoscope.greendao; - -import android.database.Cursor; -import android.database.sqlite.SQLiteStatement; - -import com.casic.endoscope.bean.CameraPointBean; - -import org.greenrobot.greendao.AbstractDao; -import org.greenrobot.greendao.Property; -import org.greenrobot.greendao.database.Database; -import org.greenrobot.greendao.database.DatabaseStatement; -import org.greenrobot.greendao.internal.DaoConfig; - -// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. - -/** - * DAO for table "CAMERA_POINT_BEAN". - */ -public class CameraPointBeanDao extends AbstractDao { - - public static final String TABLENAME = "CAMERA_POINT_BEAN"; - - /** - * Properties of entity CameraPointBean.
- * Can be used for QueryBuilder and for referencing column names. - */ - public static class Properties { - public final static Property Id = new Property(0, Long.class, "id", true, "_id"); - public final static Property Step = new Property(1, int.class, "step", false, "STEP"); - public final static Property HAngle = new Property(2, int.class, "hAngle", false, "H_ANGLE"); - public final static Property VAngle = new Property(3, int.class, "vAngle", false, "V_ANGLE"); - } - - - public CameraPointBeanDao(DaoConfig config) { - super(config); - } - - public CameraPointBeanDao(DaoConfig config, DaoSession daoSession) { - super(config, daoSession); - } - - /** - * Creates the underlying database table. - */ - public static void createTable(Database db, boolean ifNotExists) { - String constraint = ifNotExists ? "IF NOT EXISTS " : ""; - db.execSQL("CREATE TABLE " + constraint + "\"CAMERA_POINT_BEAN\" (" + // - "\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id - "\"STEP\" INTEGER NOT NULL ," + // 1: step - "\"H_ANGLE\" INTEGER NOT NULL ," + // 2: hAngle - "\"V_ANGLE\" INTEGER NOT NULL );"); // 3: vAngle - } - - /** - * Drops the underlying database table. - */ - public static void dropTable(Database db, boolean ifExists) { - String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"CAMERA_POINT_BEAN\""; - db.execSQL(sql); - } - - @Override - protected final void bindValues(DatabaseStatement stmt, CameraPointBean entity) { - stmt.clearBindings(); - - Long id = entity.getId(); - if (id != null) { - stmt.bindLong(1, id); - } - stmt.bindLong(2, entity.getStep()); - stmt.bindLong(3, entity.getHAngle()); - stmt.bindLong(4, entity.getVAngle()); - } - - @Override - protected final void bindValues(SQLiteStatement stmt, CameraPointBean entity) { - stmt.clearBindings(); - - Long id = entity.getId(); - if (id != null) { - stmt.bindLong(1, id); - } - stmt.bindLong(2, entity.getStep()); - stmt.bindLong(3, entity.getHAngle()); - stmt.bindLong(4, entity.getVAngle()); - } - - @Override - public Long readKey(Cursor cursor, int offset) { - return cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0); - } - - @Override - public CameraPointBean readEntity(Cursor cursor, int offset) { - CameraPointBean entity = new CameraPointBean( // - cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id - cursor.getInt(offset + 1), // step - cursor.getInt(offset + 2), // hAngle - cursor.getInt(offset + 3) // vAngle - ); - return entity; - } - - @Override - public void readEntity(Cursor cursor, CameraPointBean entity, int offset) { - entity.setId(cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0)); - entity.setStep(cursor.getInt(offset + 1)); - entity.setHAngle(cursor.getInt(offset + 2)); - entity.setVAngle(cursor.getInt(offset + 3)); - } - - @Override - protected final Long updateKeyAfterInsert(CameraPointBean entity, long rowId) { - entity.setId(rowId); - return rowId; - } - - @Override - public Long getKey(CameraPointBean entity) { - if (entity != null) { - return entity.getId(); - } else { - return null; - } - } - - @Override - public boolean hasKey(CameraPointBean entity) { - return entity.getId() != null; - } - - @Override - protected final boolean isEntityUpdateable() { - return true; - } - -} diff --git a/app/src/main/java/com/casic/endoscope/greendao/DaoMaster.java b/app/src/main/java/com/casic/endoscope/greendao/DaoMaster.java index 5d4fa30..a455fd0 100644 --- a/app/src/main/java/com/casic/endoscope/greendao/DaoMaster.java +++ b/app/src/main/java/com/casic/endoscope/greendao/DaoMaster.java @@ -13,25 +13,20 @@ // THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. - /** * Master of DAO (schema version 1): knows all DAOs. */ public class DaoMaster extends AbstractDaoMaster { public static final int SCHEMA_VERSION = 1; - /** - * Creates underlying database table using DAOs. - */ + /** Creates underlying database table using DAOs. */ public static void createAllTables(Database db, boolean ifNotExists) { - CameraPointBeanDao.createTable(db, ifNotExists); + GasValueBeanDao.createTable(db, ifNotExists); } - /** - * Drops underlying database table using DAOs. - */ + /** Drops underlying database table using DAOs. */ public static void dropAllTables(Database db, boolean ifExists) { - CameraPointBeanDao.dropTable(db, ifExists); + GasValueBeanDao.dropTable(db, ifExists); } /** @@ -50,7 +45,7 @@ public DaoMaster(Database db) { super(db, SCHEMA_VERSION); - registerDaoClass(CameraPointBeanDao.class); + registerDaoClass(GasValueBeanDao.class); } public DaoSession newSession() { @@ -80,9 +75,7 @@ } } - /** - * WARNING: Drops all table on Upgrade! Use only during development. - */ + /** WARNING: Drops all table on Upgrade! Use only during development. */ public static class DevOpenHelper extends OpenHelper { public DevOpenHelper(Context context, String name) { super(context, name); diff --git a/app/src/main/java/com/casic/endoscope/greendao/DaoSession.java b/app/src/main/java/com/casic/endoscope/greendao/DaoSession.java index ed2f9c0..259243d 100644 --- a/app/src/main/java/com/casic/endoscope/greendao/DaoSession.java +++ b/app/src/main/java/com/casic/endoscope/greendao/DaoSession.java @@ -1,6 +1,6 @@ package com.casic.endoscope.greendao; -import com.casic.endoscope.bean.CameraPointBean; +import com.casic.endoscope.bean.GasValueBean; import org.greenrobot.greendao.AbstractDao; import org.greenrobot.greendao.AbstractDaoSession; @@ -19,28 +19,28 @@ */ public class DaoSession extends AbstractDaoSession { - private final DaoConfig cameraPointBeanDaoConfig; + private final DaoConfig gasValueBeanDaoConfig; - private final CameraPointBeanDao cameraPointBeanDao; + private final GasValueBeanDao gasValueBeanDao; public DaoSession(Database db, IdentityScopeType type, Map>, DaoConfig> daoConfigMap) { super(db); - cameraPointBeanDaoConfig = daoConfigMap.get(CameraPointBeanDao.class).clone(); - cameraPointBeanDaoConfig.initIdentityScope(type); + gasValueBeanDaoConfig = daoConfigMap.get(GasValueBeanDao.class).clone(); + gasValueBeanDaoConfig.initIdentityScope(type); - cameraPointBeanDao = new CameraPointBeanDao(cameraPointBeanDaoConfig, this); + gasValueBeanDao = new GasValueBeanDao(gasValueBeanDaoConfig, this); - registerDao(CameraPointBean.class, cameraPointBeanDao); + registerDao(GasValueBean.class, gasValueBeanDao); } public void clear() { - cameraPointBeanDaoConfig.clearIdentityScope(); + gasValueBeanDaoConfig.clearIdentityScope(); } - public CameraPointBeanDao getCameraPointBeanDao() { - return cameraPointBeanDao; + public GasValueBeanDao getGasValueBeanDao() { + return gasValueBeanDao; } } diff --git a/app/src/main/java/com/casic/endoscope/greendao/GasValueBeanDao.java b/app/src/main/java/com/casic/endoscope/greendao/GasValueBeanDao.java new file mode 100644 index 0000000..5149375 --- /dev/null +++ b/app/src/main/java/com/casic/endoscope/greendao/GasValueBeanDao.java @@ -0,0 +1,149 @@ +package com.casic.endoscope.greendao; + +import android.database.Cursor; +import android.database.sqlite.SQLiteStatement; + +import com.casic.endoscope.bean.GasValueBean; + +import org.greenrobot.greendao.AbstractDao; +import org.greenrobot.greendao.Property; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.database.DatabaseStatement; +import org.greenrobot.greendao.internal.DaoConfig; + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. +/** + * DAO for table "GAS_VALUE_BEAN". +*/ +public class GasValueBeanDao extends AbstractDao { + + public static final String TABLENAME = "GAS_VALUE_BEAN"; + + /** + * Properties of entity GasValueBean.
+ * Can be used for QueryBuilder and for referencing column names. + */ + public static class Properties { + public final static Property Id = new Property(0, Long.class, "id", true, "_id"); + public final static Property Time = new Property(1, String.class, "time", false, "TIME"); + public final static Property Value = new Property(2, int.class, "value", false, "VALUE"); + public final static Property Location = new Property(3, String.class, "location", false, "LOCATION"); + } + + + public GasValueBeanDao(DaoConfig config) { + super(config); + } + + public GasValueBeanDao(DaoConfig config, DaoSession daoSession) { + super(config, daoSession); + } + + /** Creates the underlying database table. */ + public static void createTable(Database db, boolean ifNotExists) { + String constraint = ifNotExists? "IF NOT EXISTS ": ""; + db.execSQL("CREATE TABLE " + constraint + "\"GAS_VALUE_BEAN\" (" + // + "\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id + "\"TIME\" TEXT," + // 1: time + "\"VALUE\" INTEGER NOT NULL ," + // 2: value + "\"LOCATION\" TEXT);"); // 3: location + } + + /** Drops the underlying database table. */ + public static void dropTable(Database db, boolean ifExists) { + String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"GAS_VALUE_BEAN\""; + db.execSQL(sql); + } + + @Override + protected final void bindValues(DatabaseStatement stmt, GasValueBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String time = entity.getTime(); + if (time != null) { + stmt.bindString(2, time); + } + stmt.bindLong(3, entity.getValue()); + + String location = entity.getLocation(); + if (location != null) { + stmt.bindString(4, location); + } + } + + @Override + protected final void bindValues(SQLiteStatement stmt, GasValueBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String time = entity.getTime(); + if (time != null) { + stmt.bindString(2, time); + } + stmt.bindLong(3, entity.getValue()); + + String location = entity.getLocation(); + if (location != null) { + stmt.bindString(4, location); + } + } + + @Override + public Long readKey(Cursor cursor, int offset) { + return cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0); + } + + @Override + public GasValueBean readEntity(Cursor cursor, int offset) { + GasValueBean entity = new GasValueBean( // + cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id + cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // time + cursor.getInt(offset + 2), // value + cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3) // location + ); + return entity; + } + + @Override + public void readEntity(Cursor cursor, GasValueBean entity, int offset) { + entity.setId(cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0)); + entity.setTime(cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1)); + entity.setValue(cursor.getInt(offset + 2)); + entity.setLocation(cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3)); + } + + @Override + protected final Long updateKeyAfterInsert(GasValueBean entity, long rowId) { + entity.setId(rowId); + return rowId; + } + + @Override + public Long getKey(GasValueBean entity) { + if(entity != null) { + return entity.getId(); + } else { + return null; + } + } + + @Override + public boolean hasKey(GasValueBean entity) { + return entity.getId() != null; + } + + @Override + protected final boolean isEntityUpdateable() { + return true; + } + +} diff --git a/app/src/main/java/com/casic/endoscope/utils/DataBaseManager.kt b/app/src/main/java/com/casic/endoscope/utils/DataBaseManager.kt index a593a5b..c683db1 100644 --- a/app/src/main/java/com/casic/endoscope/utils/DataBaseManager.kt +++ b/app/src/main/java/com/casic/endoscope/utils/DataBaseManager.kt @@ -1,8 +1,6 @@ package com.casic.endoscope.utils import com.casic.endoscope.base.BaseApplication -import com.casic.endoscope.bean.CameraPointBean -import com.casic.endoscope.greendao.CameraPointBeanDao class DataBaseManager private constructor() { @@ -13,31 +11,5 @@ } } - private var cameraPointDao = BaseApplication.get().getDaoSession().cameraPointBeanDao - - fun cacheCameraPoint(step: Int, h: Int, v: Int) { - val bean = CameraPointBean() - bean.step = step - bean.hAngle = h - bean.vAngle = v - cameraPointDao.insert(bean) - } - - fun deleteCameraPoints(beans: MutableList) { - beans.forEach { - cameraPointDao.delete(it) - } - } - - fun deleteAllCameraPoint() { - cameraPointDao.deleteAll() - } - - fun queryCameraPointById(id: Long): CameraPointBean { - return cameraPointDao.queryBuilder() - .where(CameraPointBeanDao.Properties.Id.eq(id)) - .unique() - } - - fun loadAllCameraPoint(): MutableList = cameraPointDao.loadAll() + private var gasValueBeanDao = BaseApplication.get().getDaoSession().gasValueBeanDao } \ No newline at end of file diff --git a/app/src/main/java/com/casic/endoscope/utils/EndoscopeDevOpenHelper.kt b/app/src/main/java/com/casic/endoscope/utils/EndoscopeDevOpenHelper.kt index 507b1ff..fd87f0f 100644 --- a/app/src/main/java/com/casic/endoscope/utils/EndoscopeDevOpenHelper.kt +++ b/app/src/main/java/com/casic/endoscope/utils/EndoscopeDevOpenHelper.kt @@ -2,8 +2,8 @@ import android.content.Context import android.database.sqlite.SQLiteDatabase.CursorFactory -import com.casic.endoscope.greendao.CameraPointBeanDao import com.casic.endoscope.greendao.DaoMaster +import com.casic.endoscope.greendao.GasValueBeanDao import com.github.yuweiguocn.library.greendao.MigrationHelper import com.github.yuweiguocn.library.greendao.MigrationHelper.ReCreateAllTableListener import org.greenrobot.greendao.database.Database @@ -22,7 +22,7 @@ DaoMaster.dropAllTables(db, ifExists) } }, - CameraPointBeanDao::class.java + GasValueBeanDao::class.java ) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/endoscope/view/MainActivity.kt b/app/src/main/java/com/casic/endoscope/view/MainActivity.kt index 0fe757e..c4509b0 100644 --- a/app/src/main/java/com/casic/endoscope/view/MainActivity.kt +++ b/app/src/main/java/com/casic/endoscope/view/MainActivity.kt @@ -15,8 +15,6 @@ import android.view.SurfaceHolder import android.view.View import androidx.lifecycle.lifecycleScope -import com.casic.endoscope.adapter.CameraPointAdapter -import com.casic.endoscope.bean.CameraPointBean import com.casic.endoscope.databinding.ActivityMainBinding import com.casic.endoscope.extensions.check import com.casic.endoscope.extensions.convertValue @@ -28,14 +26,12 @@ import com.casic.endoscope.extensions.init import com.casic.endoscope.extensions.toTime import com.casic.endoscope.service.VideoTranscodeService -import com.casic.endoscope.utils.DataBaseManager import com.casic.endoscope.utils.ProjectConstant import com.casic.endoscope.utils.ble.BleDeviceManager import com.casic.endoscope.utils.ble.OnDeviceConnectListener import com.casic.endoscope.utils.ble.OnDeviceDiscoveredListener import com.casic.endoscope.utils.hk.MessageCodeHub import com.casic.endoscope.utils.hk.SDKGuider -import com.casic.endoscope.widgets.AddCameraPointDialog import com.casic.endoscope.widgets.BluetoothDeviceDialog import com.casic.endoscope.widgets.LineChartMarkerView import com.github.mikephil.charting.data.Entry @@ -55,10 +51,8 @@ import com.pengxh.kt.lite.extensions.timestampToTime import com.pengxh.kt.lite.utils.LoadingDialogHub import com.pengxh.kt.lite.utils.WeakReferenceHandler -import com.pengxh.kt.lite.widget.SteeringWheelView import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch -import kotlinx.coroutines.withContext import java.text.SimpleDateFormat import java.util.Date import java.util.Locale @@ -101,17 +95,11 @@ //焦距按钮是否已松开 private var isScaleButtonUp = true - //是否拍照成功 - private var isCaptureSuccess = true - private var timer: Timer? = null private var timerTask: TimerTask? = null private var seconds = 0L - private var dataBeans: MutableList = ArrayList() - private var selectedItems: MutableList = ArrayList() private var inputVideoPath = "" private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var dataAdapter: CameraPointAdapter private lateinit var serviceIntent: Intent private lateinit var dataSet: LineDataSet private lateinit var lineData: LineData @@ -123,8 +111,6 @@ override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) - dataBeans = DataBaseManager.get.loadAllCameraPoint() - //显示数据 weakReferenceHandler.sendEmptyMessage(messageCode) @@ -147,13 +133,7 @@ override fun handleMessage(msg: Message): Boolean { if (msg.what == messageCode) { //绑定数据 - dataAdapter = CameraPointAdapter(this, dataBeans) - binding.recyclerView.adapter = dataAdapter - dataAdapter.setOnItemCheckedListener(object : CameraPointAdapter.OnItemCheckedListener { - override fun onItemChecked(position: Int, items: ArrayList) { - selectedItems = items - } - }) + } return true } @@ -209,6 +189,180 @@ } } + binding.upScaleButton.setOnTouchListener { _, event -> + when (event.action) { + MotionEvent.ACTION_DOWN -> { + if (isPreviewSuccess && isScaleButtonUp) { + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_IN, 0) + isScaleButtonUp = false + } + } + + MotionEvent.ACTION_UP -> { + isScaleButtonUp = true + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_IN, 1) + } + } + false + } + + binding.downScaleButton.setOnTouchListener { _, event -> + when (event.action) { + MotionEvent.ACTION_DOWN -> { + if (isPreviewSuccess && isScaleButtonUp) { + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_OUT, 0) + isScaleButtonUp = false + } + } + + MotionEvent.ACTION_UP -> { + isScaleButtonUp = true + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_OUT, 1) + } + } + false + } + + binding.topButton.setOnTouchListener { _, motionEvent -> + when (motionEvent.action) { + MotionEvent.ACTION_DOWN -> { + if (isPreviewSuccess && isActionUp) { + hkSDK.NET_DVR_PTZControlWithSpeed( + previewHandle, PTZCommand.TILT_UP, 0, selectedSpeed + ) + isActionUp = false + } + } + + MotionEvent.ACTION_UP -> { + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.TILT_UP, 1) + isActionUp = true + } + } + false + } + + binding.centerButton.setOnClickListener { + if (!isPreviewSuccess) { + val deviceItem = SDKGuider.sdkGuider.devManageGuider.DeviceItem() + deviceItem.szDevName = "" + deviceItem.devNetInfo = SDKGuider.sdkGuider.devManageGuider.DevNetInfo( + ProjectConstant.HK_NET_IP, + ProjectConstant.HK_NET_PORT, + ProjectConstant.HK_NET_USERNAME, + ProjectConstant.HK_NET_PASSWORD + ) + if (deviceItem.szDevName.isEmpty()) { + deviceItem.szDevName = deviceItem.devNetInfo.szIp + } + val loginV40Jna = SDKGuider.sdkGuider.devManageGuider.login_v40_jna( + deviceItem.szDevName, deviceItem.devNetInfo + ) + if (loginV40Jna) { + //配置设备通道 + try { + val deviceInfo = SDKGuider.sdkGuider.devManageGuider.devList[0] + returnUserId = deviceInfo.szUserId + + aChannelNum = + deviceInfo.deviceInfoV40_jna.struDeviceV30.byChanNum.toInt() + startAChannel = + deviceInfo.deviceInfoV40_jna.struDeviceV30.byStartChan.toInt() + + dChannelNum = + deviceInfo.deviceInfoV40_jna.struDeviceV30.byIPChanNum + deviceInfo.deviceInfoV40_jna.struDeviceV30.byHighDChanNum * 256 + startDChannel = + deviceInfo.deviceInfoV40_jna.struDeviceV30.byStartChan.toInt() + + var iAnalogStartChan = startAChannel + var iDigitalStartChan = startDChannel + + val channelList = ArrayList() + + for (i in 0 until aChannelNum) { + channelList.add("ACamera_$iAnalogStartChan") + iAnalogStartChan++ + } + + for (i in 0 until dChannelNum) { + channelList.add("DCamera_$iDigitalStartChan") + iDigitalStartChan++ + } + selectChannel = Integer.valueOf(channelList[0].getChannel()) + + val streamList = ArrayList() + streamList.add("main_stream") + streamList.add("sub_stream") + streamList.add("third_stream") + + //开始预览 + if (previewHandle != -1) { + SDKGuider.sdkGuider.devPreviewGuider.RealPlay_Stop_jni(previewHandle) + } + val strutPlayInfo = NET_DVR_PREVIEWINFO() + strutPlayInfo.lChannel = selectChannel + strutPlayInfo.dwStreamType = 1 + strutPlayInfo.bBlocked = 1 + strutPlayInfo.hHwnd = binding.surfaceView.holder + previewHandle = SDKGuider.sdkGuider.devPreviewGuider.RealPlay_V40_jni( + returnUserId, strutPlayInfo, null + ) + if (previewHandle < 0) { + Log.d(kTag, "initEvent: Err:${MessageCodeHub.getErrorCode()}") + return@setOnClickListener + } + isPreviewSuccess = true + "预览开启成功".show(context) + //开始计时 + timer = Timer() + timerTask = object : TimerTask() { + override fun run() { + seconds++ + lifecycleScope.launch(Dispatchers.Main) { + binding.runningTimeView.text = seconds.toTime() + } + } + } + timer?.schedule(timerTask, 0, 1000) + } catch (e: IndexOutOfBoundsException) { + e.printStackTrace() + "设备未正常连接,无法开启预览".show(context) + } + } else { + "设备登陆失败".show(context) + } + } else { + if (!SDKGuider.sdkGuider.devPreviewGuider.RealPlay_Stop_jni(previewHandle)) { + return@setOnClickListener + } + previewHandle = -1 + isPreviewSuccess = false + "预览关闭成功".show(context) + //停止计时 + timerTask?.cancel() + timer?.cancel() + } + } + + binding.bottomButton.setOnTouchListener { _, motionEvent -> + when (motionEvent.action) { + MotionEvent.ACTION_DOWN -> { + if (isPreviewSuccess && isActionUp) { + hkSDK.NET_DVR_PTZControlWithSpeed( + previewHandle, PTZCommand.TILT_DOWN, 0, selectedSpeed + ) + isActionUp = false + } + } + + MotionEvent.ACTION_UP -> { + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.TILT_DOWN, 1) + isActionUp = true + } + } + false + } + //单张拍照 binding.imageButton.setOnClickListener { if (isPreviewSuccess) { @@ -252,278 +406,8 @@ true } - //连续拍照 - binding.multipleImageButton.setOnClickListener { - if (dataBeans.isEmpty()) { - "请先设置连续拍照步骤".show(this) - return@setOnClickListener - } - if (isPreviewSuccess) { - lifecycleScope.launch(Dispatchers.IO) { - dataBeans.forEach { - //再拍照 - if (isCaptureSuccess) { - isCaptureSuccess = false - - //先执行角度 - executeAngle(it.hAngle, it.vAngle) - - withContext(Dispatchers.Main) { - "抓取步骤${it.step}画面".show(context) - } - - val strJpeg = NET_DVR_JPEGPARA() - strJpeg.wPicQuality = 1 - strJpeg.wPicSize = 2 - - val imagePath = - "/${createImageFileDir()}/${timeFormat.format(Date())}.png" - hkSDK.NET_DVR_CaptureJPEGPicture( - returnUserId, selectChannel, strJpeg, imagePath - ) - - isCaptureSuccess = MessageCodeHub.getErrorCode() == 0 - } - } - withContext(Dispatchers.Main) { - "连续抓取画面完成".show(context) - } - } - } else { - "摄像头预览未打开,无法拍照".show(this) - } - } - - binding.addButton.setOnClickListener { - val step = if (dataBeans.isEmpty()) { - 0 - } else { - dataBeans.last().step - } - AddCameraPointDialog.Builder().setContext(this).setLastStep(step) - .setNegativeButton("取消").setPositiveButton("添加") - .setOnDialogButtonClickListener(object : - AddCameraPointDialog.OnDialogButtonClickListener { - override fun onConfirmClick(step: Int, hAngle: Int, vAngle: Int) { - DataBaseManager.get.cacheCameraPoint(step, hAngle, vAngle) - dataBeans = DataBaseManager.get.loadAllCameraPoint() - dataAdapter.setRefreshData(dataBeans) - } - - override fun onCancelClick() { - - } - }).build().show() - } - - binding.deleteButton.setOnClickListener { - if (selectedItems.isEmpty()) { - "请先选择要删除的步骤".show(this) - return@setOnClickListener - } - DataBaseManager.get.deleteCameraPoints(selectedItems) - dataBeans = DataBaseManager.get.loadAllCameraPoint() - dataAdapter.setRefreshData(dataBeans) - selectedItems.clear() - } - - binding.steeringWheelView.setOnWheelTouchListener(object : - SteeringWheelView.OnWheelTouchListener { - override fun onCenterClicked() { - if (!isPreviewSuccess) { - val deviceItem = SDKGuider.sdkGuider.devManageGuider.DeviceItem() - deviceItem.szDevName = "" - deviceItem.devNetInfo = SDKGuider.sdkGuider.devManageGuider.DevNetInfo( - ProjectConstant.HK_NET_IP, - ProjectConstant.HK_NET_PORT, - ProjectConstant.HK_NET_USERNAME, - ProjectConstant.HK_NET_PASSWORD - ) - if (deviceItem.szDevName.isEmpty()) { - deviceItem.szDevName = deviceItem.devNetInfo.szIp - } - val loginV40Jna = SDKGuider.sdkGuider.devManageGuider.login_v40_jna( - deviceItem.szDevName, deviceItem.devNetInfo - ) - if (loginV40Jna) { - //配置设备通道 - try { - val deviceInfo = SDKGuider.sdkGuider.devManageGuider.devList[0] - returnUserId = deviceInfo.szUserId - - aChannelNum = - deviceInfo.deviceInfoV40_jna.struDeviceV30.byChanNum.toInt() - startAChannel = - deviceInfo.deviceInfoV40_jna.struDeviceV30.byStartChan.toInt() - - dChannelNum = - deviceInfo.deviceInfoV40_jna.struDeviceV30.byIPChanNum + deviceInfo.deviceInfoV40_jna.struDeviceV30.byHighDChanNum * 256 - startDChannel = - deviceInfo.deviceInfoV40_jna.struDeviceV30.byStartChan.toInt() - - var iAnalogStartChan = startAChannel - var iDigitalStartChan = startDChannel - - val channelList = ArrayList() - - for (i in 0 until aChannelNum) { - channelList.add("ACamera_$iAnalogStartChan") - iAnalogStartChan++ - } - - for (i in 0 until dChannelNum) { - channelList.add("DCamera_$iDigitalStartChan") - iDigitalStartChan++ - } - selectChannel = Integer.valueOf(channelList[0].getChannel()) - - val streamList = ArrayList() - streamList.add("main_stream") - streamList.add("sub_stream") - streamList.add("third_stream") - - //开始预览 - if (previewHandle != -1) { - SDKGuider.sdkGuider.devPreviewGuider.RealPlay_Stop_jni(previewHandle) - } - val strutPlayInfo = NET_DVR_PREVIEWINFO() - strutPlayInfo.lChannel = selectChannel - strutPlayInfo.dwStreamType = 1 - strutPlayInfo.bBlocked = 1 - strutPlayInfo.hHwnd = binding.surfaceView.holder - previewHandle = SDKGuider.sdkGuider.devPreviewGuider.RealPlay_V40_jni( - returnUserId, strutPlayInfo, null - ) - if (previewHandle < 0) { - Log.d(kTag, "initEvent: Err:${MessageCodeHub.getErrorCode()}") - return - } - isPreviewSuccess = true - "预览开启成功".show(context) - //开始计时 - timer = Timer() - timerTask = object : TimerTask() { - override fun run() { - seconds++ - lifecycleScope.launch(Dispatchers.Main) { - binding.runningTimeView.text = seconds.toTime() - } - } - } - timer?.schedule(timerTask, 0, 1000) - } catch (e: IndexOutOfBoundsException) { - e.printStackTrace() - "设备未正常连接,无法开启预览".show(context) - } - } else { - "设备登陆失败".show(context) - } - } else { - if (!SDKGuider.sdkGuider.devPreviewGuider.RealPlay_Stop_jni(previewHandle)) { - return - } - previewHandle = -1 - isPreviewSuccess = false - "预览关闭成功".show(context) - //停止计时 - timerTask?.cancel() - timer?.cancel() - } - } - - override fun onLeftTurn() { - if (isPreviewSuccess && isActionUp) { - hkSDK.NET_DVR_PTZControlWithSpeed( - previewHandle, PTZCommand.PAN_LEFT, 0, selectedSpeed - ) - isActionUp = false - } - } - - override fun onTopTurn() { - if (isPreviewSuccess && isActionUp) { - hkSDK.NET_DVR_PTZControlWithSpeed( - previewHandle, PTZCommand.TILT_UP, 0, selectedSpeed - ) - isActionUp = false - } - } - - override fun onRightTurn() { - if (isPreviewSuccess && isActionUp) { - hkSDK.NET_DVR_PTZControlWithSpeed( - previewHandle, PTZCommand.PAN_RIGHT, 0, selectedSpeed - ) - isActionUp = false - } - } - - override fun onBottomTurn() { - if (isPreviewSuccess && isActionUp) { - hkSDK.NET_DVR_PTZControlWithSpeed( - previewHandle, PTZCommand.TILT_DOWN, 0, selectedSpeed - ) - isActionUp = false - } - } - - override fun onActionTurnUp(dir: SteeringWheelView.Direction) { - when (dir) { - SteeringWheelView.Direction.LEFT -> { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.PAN_LEFT, 1) - isActionUp = true - } - - SteeringWheelView.Direction.TOP -> { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.TILT_UP, 1) - isActionUp = true - } - - SteeringWheelView.Direction.RIGHT -> { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.PAN_RIGHT, 1) - isActionUp = true - } - - SteeringWheelView.Direction.BOTTOM -> { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.TILT_DOWN, 1) - isActionUp = true - } - } - } - }) - - binding.upScaleButton.setOnTouchListener { _, event -> - when (event.action) { - MotionEvent.ACTION_DOWN -> { - if (isPreviewSuccess && isScaleButtonUp) { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_IN, 0) - isScaleButtonUp = false - } - } - - MotionEvent.ACTION_UP -> { - isScaleButtonUp = true - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_IN, 1) - } - } - false - } - - binding.downScaleButton.setOnTouchListener { _, event -> - when (event.action) { - MotionEvent.ACTION_DOWN -> { - if (isPreviewSuccess && isScaleButtonUp) { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_OUT, 0) - isScaleButtonUp = false - } - } - - MotionEvent.ACTION_UP -> { - isScaleButtonUp = true - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_OUT, 1) - } - } - false + binding.resetButton.setOnClickListener { + executeAngle(0, 0) } } diff --git a/app/src/main/res/drawable/bg_solid_layout_blue_10.xml b/app/src/main/res/drawable/bg_solid_layout_blue_10.xml new file mode 100644 index 0000000..b7e06e3 --- /dev/null +++ b/app/src/main/res/drawable/bg_solid_layout_blue_10.xml @@ -0,0 +1,7 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_stroke_layout_blue_10.xml b/app/src/main/res/drawable/bg_stroke_layout_blue_10.xml deleted file mode 100644 index d6f55c9..0000000 --- a/app/src/main/res/drawable/bg_stroke_layout_blue_10.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_camera.xml b/app/src/main/res/drawable/ic_camera.xml new file mode 100644 index 0000000..1f7ab22 --- /dev/null +++ b/app/src/main/res/drawable/ic_camera.xml @@ -0,0 +1,15 @@ + + + + + diff --git a/app/build.gradle b/app/build.gradle index c2a2c53..64d4d0c 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -72,7 +72,7 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5.4' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.8' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.cardview:cardview:1.0.0' diff --git a/app/src/main/java/com/casic/endoscope/adapter/CameraPointAdapter.kt b/app/src/main/java/com/casic/endoscope/adapter/CameraPointAdapter.kt deleted file mode 100644 index fe404b2..0000000 --- a/app/src/main/java/com/casic/endoscope/adapter/CameraPointAdapter.kt +++ /dev/null @@ -1,78 +0,0 @@ -package com.casic.endoscope.adapter - -import android.annotation.SuppressLint -import android.content.Context -import android.graphics.Color -import android.view.LayoutInflater -import android.view.ViewGroup -import android.widget.LinearLayout -import androidx.recyclerview.widget.RecyclerView -import com.casic.endoscope.R -import com.casic.endoscope.bean.CameraPointBean -import com.pengxh.kt.lite.adapter.ViewHolder -import com.pengxh.kt.lite.extensions.convertColor - -class CameraPointAdapter( - private val context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var multipleSelected = mutableSetOf() - private var selectedItems = ArrayList() - - override fun getItemCount(): Int = dataRows.size - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { - return ViewHolder( - LayoutInflater.from(context).inflate(R.layout.item_point_list_rv, parent, false) - ) - } - - @SuppressLint("NotifyDataSetChanged") - fun setRefreshData(dataRows: MutableList) { - this.dataRows.clear() - this.dataRows.addAll(dataRows) - notifyDataSetChanged() - multipleSelected.clear() - selectedItems.clear() - } - - override fun onBindViewHolder(holder: ViewHolder, position: Int) { - val item = dataRows[position] - holder.setText(R.id.stepNameView, "步骤 ${item.step}") - .setText(R.id.hAngleView, "水平角度 ${item.hAngle}°") - .setText(R.id.vAngleView, "垂直角度 ${item.vAngle}°") - - val linearLayout = holder.itemView.findViewById(R.id.rootView) - //item背景色 - if (position % 2 == 0) { - linearLayout.setBackgroundColor(Color.parseColor("#C8E3F4")) - } else { - linearLayout.setBackgroundColor(R.color.backgroundColor.convertColor(context)) - } - - holder.itemView.isSelected = multipleSelected.contains(position) - holder.itemView.setOnClickListener { - if (multipleSelected.contains(position)) { - multipleSelected.remove(position) - selectedItems.remove(dataRows[position]) - holder.itemView.isSelected = false - } else { - multipleSelected.add(position) - selectedItems.add(dataRows[position]) - holder.itemView.isSelected = true - } - - itemCheckedListener?.onItemChecked(position, selectedItems) - } - } - - private var itemCheckedListener: OnItemCheckedListener? = null - - interface OnItemCheckedListener { - fun onItemChecked(position: Int, items: ArrayList) - } - - fun setOnItemCheckedListener(listener: OnItemCheckedListener) { - itemCheckedListener = listener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/endoscope/bean/CameraPointBean.java b/app/src/main/java/com/casic/endoscope/bean/CameraPointBean.java deleted file mode 100644 index 3a20d82..0000000 --- a/app/src/main/java/com/casic/endoscope/bean/CameraPointBean.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.casic.endoscope.bean; - -import org.greenrobot.greendao.annotation.Entity; -import org.greenrobot.greendao.annotation.Generated; -import org.greenrobot.greendao.annotation.Id; - -/** - * 必须是java,不能是kt - */ -@Entity -public class CameraPointBean { - - @Id(autoincrement = true) - private Long id;//主键自增 - - private int step;//步骤序号 - private int hAngle;//水平角度 - private int vAngle;//垂直角度 - - @Generated(hash = 1436018650) - public CameraPointBean(Long id, int step, int hAngle, int vAngle) { - this.id = id; - this.step = step; - this.hAngle = hAngle; - this.vAngle = vAngle; - } - - @Generated(hash = 44086073) - public CameraPointBean() { - } - - public Long getId() { - return this.id; - } - - public void setId(Long id) { - this.id = id; - } - - public int getStep() { - return this.step; - } - - public void setStep(int step) { - this.step = step; - } - - public int getHAngle() { - return this.hAngle; - } - - public void setHAngle(int hAngle) { - this.hAngle = hAngle; - } - - public int getVAngle() { - return this.vAngle; - } - - public void setVAngle(int vAngle) { - this.vAngle = vAngle; - } -} diff --git a/app/src/main/java/com/casic/endoscope/bean/GasValueBean.java b/app/src/main/java/com/casic/endoscope/bean/GasValueBean.java new file mode 100644 index 0000000..6537b9a --- /dev/null +++ b/app/src/main/java/com/casic/endoscope/bean/GasValueBean.java @@ -0,0 +1,63 @@ +package com.casic.endoscope.bean; + +import org.greenrobot.greendao.annotation.Entity; +import org.greenrobot.greendao.annotation.Generated; +import org.greenrobot.greendao.annotation.Id; + +/** + * 必须是java,不能是kt + * 甲烷浓度表结构 + */ +@Entity +public class GasValueBean { + @Id(autoincrement = true) + private Long id;//主键自增 + + private String time;//采集浓度的时间 + private int value;//采集的浓度 + private String location;//浓度采集点位置 + + @Generated(hash = 663679791) + public GasValueBean(Long id, String time, int value, String location) { + this.id = id; + this.time = time; + this.value = value; + this.location = location; + } + + @Generated(hash = 291409217) + public GasValueBean() { + } + + public Long getId() { + return this.id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getTime() { + return this.time; + } + + public void setTime(String time) { + this.time = time; + } + + public int getValue() { + return this.value; + } + + public void setValue(int value) { + this.value = value; + } + + public String getLocation() { + return this.location; + } + + public void setLocation(String location) { + this.location = location; + } +} diff --git a/app/src/main/java/com/casic/endoscope/greendao/CameraPointBeanDao.java b/app/src/main/java/com/casic/endoscope/greendao/CameraPointBeanDao.java deleted file mode 100644 index 11bc932..0000000 --- a/app/src/main/java/com/casic/endoscope/greendao/CameraPointBeanDao.java +++ /dev/null @@ -1,138 +0,0 @@ -package com.casic.endoscope.greendao; - -import android.database.Cursor; -import android.database.sqlite.SQLiteStatement; - -import com.casic.endoscope.bean.CameraPointBean; - -import org.greenrobot.greendao.AbstractDao; -import org.greenrobot.greendao.Property; -import org.greenrobot.greendao.database.Database; -import org.greenrobot.greendao.database.DatabaseStatement; -import org.greenrobot.greendao.internal.DaoConfig; - -// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. - -/** - * DAO for table "CAMERA_POINT_BEAN". - */ -public class CameraPointBeanDao extends AbstractDao { - - public static final String TABLENAME = "CAMERA_POINT_BEAN"; - - /** - * Properties of entity CameraPointBean.
- * Can be used for QueryBuilder and for referencing column names. - */ - public static class Properties { - public final static Property Id = new Property(0, Long.class, "id", true, "_id"); - public final static Property Step = new Property(1, int.class, "step", false, "STEP"); - public final static Property HAngle = new Property(2, int.class, "hAngle", false, "H_ANGLE"); - public final static Property VAngle = new Property(3, int.class, "vAngle", false, "V_ANGLE"); - } - - - public CameraPointBeanDao(DaoConfig config) { - super(config); - } - - public CameraPointBeanDao(DaoConfig config, DaoSession daoSession) { - super(config, daoSession); - } - - /** - * Creates the underlying database table. - */ - public static void createTable(Database db, boolean ifNotExists) { - String constraint = ifNotExists ? "IF NOT EXISTS " : ""; - db.execSQL("CREATE TABLE " + constraint + "\"CAMERA_POINT_BEAN\" (" + // - "\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id - "\"STEP\" INTEGER NOT NULL ," + // 1: step - "\"H_ANGLE\" INTEGER NOT NULL ," + // 2: hAngle - "\"V_ANGLE\" INTEGER NOT NULL );"); // 3: vAngle - } - - /** - * Drops the underlying database table. - */ - public static void dropTable(Database db, boolean ifExists) { - String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"CAMERA_POINT_BEAN\""; - db.execSQL(sql); - } - - @Override - protected final void bindValues(DatabaseStatement stmt, CameraPointBean entity) { - stmt.clearBindings(); - - Long id = entity.getId(); - if (id != null) { - stmt.bindLong(1, id); - } - stmt.bindLong(2, entity.getStep()); - stmt.bindLong(3, entity.getHAngle()); - stmt.bindLong(4, entity.getVAngle()); - } - - @Override - protected final void bindValues(SQLiteStatement stmt, CameraPointBean entity) { - stmt.clearBindings(); - - Long id = entity.getId(); - if (id != null) { - stmt.bindLong(1, id); - } - stmt.bindLong(2, entity.getStep()); - stmt.bindLong(3, entity.getHAngle()); - stmt.bindLong(4, entity.getVAngle()); - } - - @Override - public Long readKey(Cursor cursor, int offset) { - return cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0); - } - - @Override - public CameraPointBean readEntity(Cursor cursor, int offset) { - CameraPointBean entity = new CameraPointBean( // - cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id - cursor.getInt(offset + 1), // step - cursor.getInt(offset + 2), // hAngle - cursor.getInt(offset + 3) // vAngle - ); - return entity; - } - - @Override - public void readEntity(Cursor cursor, CameraPointBean entity, int offset) { - entity.setId(cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0)); - entity.setStep(cursor.getInt(offset + 1)); - entity.setHAngle(cursor.getInt(offset + 2)); - entity.setVAngle(cursor.getInt(offset + 3)); - } - - @Override - protected final Long updateKeyAfterInsert(CameraPointBean entity, long rowId) { - entity.setId(rowId); - return rowId; - } - - @Override - public Long getKey(CameraPointBean entity) { - if (entity != null) { - return entity.getId(); - } else { - return null; - } - } - - @Override - public boolean hasKey(CameraPointBean entity) { - return entity.getId() != null; - } - - @Override - protected final boolean isEntityUpdateable() { - return true; - } - -} diff --git a/app/src/main/java/com/casic/endoscope/greendao/DaoMaster.java b/app/src/main/java/com/casic/endoscope/greendao/DaoMaster.java index 5d4fa30..a455fd0 100644 --- a/app/src/main/java/com/casic/endoscope/greendao/DaoMaster.java +++ b/app/src/main/java/com/casic/endoscope/greendao/DaoMaster.java @@ -13,25 +13,20 @@ // THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. - /** * Master of DAO (schema version 1): knows all DAOs. */ public class DaoMaster extends AbstractDaoMaster { public static final int SCHEMA_VERSION = 1; - /** - * Creates underlying database table using DAOs. - */ + /** Creates underlying database table using DAOs. */ public static void createAllTables(Database db, boolean ifNotExists) { - CameraPointBeanDao.createTable(db, ifNotExists); + GasValueBeanDao.createTable(db, ifNotExists); } - /** - * Drops underlying database table using DAOs. - */ + /** Drops underlying database table using DAOs. */ public static void dropAllTables(Database db, boolean ifExists) { - CameraPointBeanDao.dropTable(db, ifExists); + GasValueBeanDao.dropTable(db, ifExists); } /** @@ -50,7 +45,7 @@ public DaoMaster(Database db) { super(db, SCHEMA_VERSION); - registerDaoClass(CameraPointBeanDao.class); + registerDaoClass(GasValueBeanDao.class); } public DaoSession newSession() { @@ -80,9 +75,7 @@ } } - /** - * WARNING: Drops all table on Upgrade! Use only during development. - */ + /** WARNING: Drops all table on Upgrade! Use only during development. */ public static class DevOpenHelper extends OpenHelper { public DevOpenHelper(Context context, String name) { super(context, name); diff --git a/app/src/main/java/com/casic/endoscope/greendao/DaoSession.java b/app/src/main/java/com/casic/endoscope/greendao/DaoSession.java index ed2f9c0..259243d 100644 --- a/app/src/main/java/com/casic/endoscope/greendao/DaoSession.java +++ b/app/src/main/java/com/casic/endoscope/greendao/DaoSession.java @@ -1,6 +1,6 @@ package com.casic.endoscope.greendao; -import com.casic.endoscope.bean.CameraPointBean; +import com.casic.endoscope.bean.GasValueBean; import org.greenrobot.greendao.AbstractDao; import org.greenrobot.greendao.AbstractDaoSession; @@ -19,28 +19,28 @@ */ public class DaoSession extends AbstractDaoSession { - private final DaoConfig cameraPointBeanDaoConfig; + private final DaoConfig gasValueBeanDaoConfig; - private final CameraPointBeanDao cameraPointBeanDao; + private final GasValueBeanDao gasValueBeanDao; public DaoSession(Database db, IdentityScopeType type, Map>, DaoConfig> daoConfigMap) { super(db); - cameraPointBeanDaoConfig = daoConfigMap.get(CameraPointBeanDao.class).clone(); - cameraPointBeanDaoConfig.initIdentityScope(type); + gasValueBeanDaoConfig = daoConfigMap.get(GasValueBeanDao.class).clone(); + gasValueBeanDaoConfig.initIdentityScope(type); - cameraPointBeanDao = new CameraPointBeanDao(cameraPointBeanDaoConfig, this); + gasValueBeanDao = new GasValueBeanDao(gasValueBeanDaoConfig, this); - registerDao(CameraPointBean.class, cameraPointBeanDao); + registerDao(GasValueBean.class, gasValueBeanDao); } public void clear() { - cameraPointBeanDaoConfig.clearIdentityScope(); + gasValueBeanDaoConfig.clearIdentityScope(); } - public CameraPointBeanDao getCameraPointBeanDao() { - return cameraPointBeanDao; + public GasValueBeanDao getGasValueBeanDao() { + return gasValueBeanDao; } } diff --git a/app/src/main/java/com/casic/endoscope/greendao/GasValueBeanDao.java b/app/src/main/java/com/casic/endoscope/greendao/GasValueBeanDao.java new file mode 100644 index 0000000..5149375 --- /dev/null +++ b/app/src/main/java/com/casic/endoscope/greendao/GasValueBeanDao.java @@ -0,0 +1,149 @@ +package com.casic.endoscope.greendao; + +import android.database.Cursor; +import android.database.sqlite.SQLiteStatement; + +import com.casic.endoscope.bean.GasValueBean; + +import org.greenrobot.greendao.AbstractDao; +import org.greenrobot.greendao.Property; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.database.DatabaseStatement; +import org.greenrobot.greendao.internal.DaoConfig; + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. +/** + * DAO for table "GAS_VALUE_BEAN". +*/ +public class GasValueBeanDao extends AbstractDao { + + public static final String TABLENAME = "GAS_VALUE_BEAN"; + + /** + * Properties of entity GasValueBean.
+ * Can be used for QueryBuilder and for referencing column names. + */ + public static class Properties { + public final static Property Id = new Property(0, Long.class, "id", true, "_id"); + public final static Property Time = new Property(1, String.class, "time", false, "TIME"); + public final static Property Value = new Property(2, int.class, "value", false, "VALUE"); + public final static Property Location = new Property(3, String.class, "location", false, "LOCATION"); + } + + + public GasValueBeanDao(DaoConfig config) { + super(config); + } + + public GasValueBeanDao(DaoConfig config, DaoSession daoSession) { + super(config, daoSession); + } + + /** Creates the underlying database table. */ + public static void createTable(Database db, boolean ifNotExists) { + String constraint = ifNotExists? "IF NOT EXISTS ": ""; + db.execSQL("CREATE TABLE " + constraint + "\"GAS_VALUE_BEAN\" (" + // + "\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id + "\"TIME\" TEXT," + // 1: time + "\"VALUE\" INTEGER NOT NULL ," + // 2: value + "\"LOCATION\" TEXT);"); // 3: location + } + + /** Drops the underlying database table. */ + public static void dropTable(Database db, boolean ifExists) { + String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"GAS_VALUE_BEAN\""; + db.execSQL(sql); + } + + @Override + protected final void bindValues(DatabaseStatement stmt, GasValueBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String time = entity.getTime(); + if (time != null) { + stmt.bindString(2, time); + } + stmt.bindLong(3, entity.getValue()); + + String location = entity.getLocation(); + if (location != null) { + stmt.bindString(4, location); + } + } + + @Override + protected final void bindValues(SQLiteStatement stmt, GasValueBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String time = entity.getTime(); + if (time != null) { + stmt.bindString(2, time); + } + stmt.bindLong(3, entity.getValue()); + + String location = entity.getLocation(); + if (location != null) { + stmt.bindString(4, location); + } + } + + @Override + public Long readKey(Cursor cursor, int offset) { + return cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0); + } + + @Override + public GasValueBean readEntity(Cursor cursor, int offset) { + GasValueBean entity = new GasValueBean( // + cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id + cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // time + cursor.getInt(offset + 2), // value + cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3) // location + ); + return entity; + } + + @Override + public void readEntity(Cursor cursor, GasValueBean entity, int offset) { + entity.setId(cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0)); + entity.setTime(cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1)); + entity.setValue(cursor.getInt(offset + 2)); + entity.setLocation(cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3)); + } + + @Override + protected final Long updateKeyAfterInsert(GasValueBean entity, long rowId) { + entity.setId(rowId); + return rowId; + } + + @Override + public Long getKey(GasValueBean entity) { + if(entity != null) { + return entity.getId(); + } else { + return null; + } + } + + @Override + public boolean hasKey(GasValueBean entity) { + return entity.getId() != null; + } + + @Override + protected final boolean isEntityUpdateable() { + return true; + } + +} diff --git a/app/src/main/java/com/casic/endoscope/utils/DataBaseManager.kt b/app/src/main/java/com/casic/endoscope/utils/DataBaseManager.kt index a593a5b..c683db1 100644 --- a/app/src/main/java/com/casic/endoscope/utils/DataBaseManager.kt +++ b/app/src/main/java/com/casic/endoscope/utils/DataBaseManager.kt @@ -1,8 +1,6 @@ package com.casic.endoscope.utils import com.casic.endoscope.base.BaseApplication -import com.casic.endoscope.bean.CameraPointBean -import com.casic.endoscope.greendao.CameraPointBeanDao class DataBaseManager private constructor() { @@ -13,31 +11,5 @@ } } - private var cameraPointDao = BaseApplication.get().getDaoSession().cameraPointBeanDao - - fun cacheCameraPoint(step: Int, h: Int, v: Int) { - val bean = CameraPointBean() - bean.step = step - bean.hAngle = h - bean.vAngle = v - cameraPointDao.insert(bean) - } - - fun deleteCameraPoints(beans: MutableList) { - beans.forEach { - cameraPointDao.delete(it) - } - } - - fun deleteAllCameraPoint() { - cameraPointDao.deleteAll() - } - - fun queryCameraPointById(id: Long): CameraPointBean { - return cameraPointDao.queryBuilder() - .where(CameraPointBeanDao.Properties.Id.eq(id)) - .unique() - } - - fun loadAllCameraPoint(): MutableList = cameraPointDao.loadAll() + private var gasValueBeanDao = BaseApplication.get().getDaoSession().gasValueBeanDao } \ No newline at end of file diff --git a/app/src/main/java/com/casic/endoscope/utils/EndoscopeDevOpenHelper.kt b/app/src/main/java/com/casic/endoscope/utils/EndoscopeDevOpenHelper.kt index 507b1ff..fd87f0f 100644 --- a/app/src/main/java/com/casic/endoscope/utils/EndoscopeDevOpenHelper.kt +++ b/app/src/main/java/com/casic/endoscope/utils/EndoscopeDevOpenHelper.kt @@ -2,8 +2,8 @@ import android.content.Context import android.database.sqlite.SQLiteDatabase.CursorFactory -import com.casic.endoscope.greendao.CameraPointBeanDao import com.casic.endoscope.greendao.DaoMaster +import com.casic.endoscope.greendao.GasValueBeanDao import com.github.yuweiguocn.library.greendao.MigrationHelper import com.github.yuweiguocn.library.greendao.MigrationHelper.ReCreateAllTableListener import org.greenrobot.greendao.database.Database @@ -22,7 +22,7 @@ DaoMaster.dropAllTables(db, ifExists) } }, - CameraPointBeanDao::class.java + GasValueBeanDao::class.java ) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/endoscope/view/MainActivity.kt b/app/src/main/java/com/casic/endoscope/view/MainActivity.kt index 0fe757e..c4509b0 100644 --- a/app/src/main/java/com/casic/endoscope/view/MainActivity.kt +++ b/app/src/main/java/com/casic/endoscope/view/MainActivity.kt @@ -15,8 +15,6 @@ import android.view.SurfaceHolder import android.view.View import androidx.lifecycle.lifecycleScope -import com.casic.endoscope.adapter.CameraPointAdapter -import com.casic.endoscope.bean.CameraPointBean import com.casic.endoscope.databinding.ActivityMainBinding import com.casic.endoscope.extensions.check import com.casic.endoscope.extensions.convertValue @@ -28,14 +26,12 @@ import com.casic.endoscope.extensions.init import com.casic.endoscope.extensions.toTime import com.casic.endoscope.service.VideoTranscodeService -import com.casic.endoscope.utils.DataBaseManager import com.casic.endoscope.utils.ProjectConstant import com.casic.endoscope.utils.ble.BleDeviceManager import com.casic.endoscope.utils.ble.OnDeviceConnectListener import com.casic.endoscope.utils.ble.OnDeviceDiscoveredListener import com.casic.endoscope.utils.hk.MessageCodeHub import com.casic.endoscope.utils.hk.SDKGuider -import com.casic.endoscope.widgets.AddCameraPointDialog import com.casic.endoscope.widgets.BluetoothDeviceDialog import com.casic.endoscope.widgets.LineChartMarkerView import com.github.mikephil.charting.data.Entry @@ -55,10 +51,8 @@ import com.pengxh.kt.lite.extensions.timestampToTime import com.pengxh.kt.lite.utils.LoadingDialogHub import com.pengxh.kt.lite.utils.WeakReferenceHandler -import com.pengxh.kt.lite.widget.SteeringWheelView import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch -import kotlinx.coroutines.withContext import java.text.SimpleDateFormat import java.util.Date import java.util.Locale @@ -101,17 +95,11 @@ //焦距按钮是否已松开 private var isScaleButtonUp = true - //是否拍照成功 - private var isCaptureSuccess = true - private var timer: Timer? = null private var timerTask: TimerTask? = null private var seconds = 0L - private var dataBeans: MutableList = ArrayList() - private var selectedItems: MutableList = ArrayList() private var inputVideoPath = "" private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var dataAdapter: CameraPointAdapter private lateinit var serviceIntent: Intent private lateinit var dataSet: LineDataSet private lateinit var lineData: LineData @@ -123,8 +111,6 @@ override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) - dataBeans = DataBaseManager.get.loadAllCameraPoint() - //显示数据 weakReferenceHandler.sendEmptyMessage(messageCode) @@ -147,13 +133,7 @@ override fun handleMessage(msg: Message): Boolean { if (msg.what == messageCode) { //绑定数据 - dataAdapter = CameraPointAdapter(this, dataBeans) - binding.recyclerView.adapter = dataAdapter - dataAdapter.setOnItemCheckedListener(object : CameraPointAdapter.OnItemCheckedListener { - override fun onItemChecked(position: Int, items: ArrayList) { - selectedItems = items - } - }) + } return true } @@ -209,6 +189,180 @@ } } + binding.upScaleButton.setOnTouchListener { _, event -> + when (event.action) { + MotionEvent.ACTION_DOWN -> { + if (isPreviewSuccess && isScaleButtonUp) { + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_IN, 0) + isScaleButtonUp = false + } + } + + MotionEvent.ACTION_UP -> { + isScaleButtonUp = true + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_IN, 1) + } + } + false + } + + binding.downScaleButton.setOnTouchListener { _, event -> + when (event.action) { + MotionEvent.ACTION_DOWN -> { + if (isPreviewSuccess && isScaleButtonUp) { + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_OUT, 0) + isScaleButtonUp = false + } + } + + MotionEvent.ACTION_UP -> { + isScaleButtonUp = true + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_OUT, 1) + } + } + false + } + + binding.topButton.setOnTouchListener { _, motionEvent -> + when (motionEvent.action) { + MotionEvent.ACTION_DOWN -> { + if (isPreviewSuccess && isActionUp) { + hkSDK.NET_DVR_PTZControlWithSpeed( + previewHandle, PTZCommand.TILT_UP, 0, selectedSpeed + ) + isActionUp = false + } + } + + MotionEvent.ACTION_UP -> { + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.TILT_UP, 1) + isActionUp = true + } + } + false + } + + binding.centerButton.setOnClickListener { + if (!isPreviewSuccess) { + val deviceItem = SDKGuider.sdkGuider.devManageGuider.DeviceItem() + deviceItem.szDevName = "" + deviceItem.devNetInfo = SDKGuider.sdkGuider.devManageGuider.DevNetInfo( + ProjectConstant.HK_NET_IP, + ProjectConstant.HK_NET_PORT, + ProjectConstant.HK_NET_USERNAME, + ProjectConstant.HK_NET_PASSWORD + ) + if (deviceItem.szDevName.isEmpty()) { + deviceItem.szDevName = deviceItem.devNetInfo.szIp + } + val loginV40Jna = SDKGuider.sdkGuider.devManageGuider.login_v40_jna( + deviceItem.szDevName, deviceItem.devNetInfo + ) + if (loginV40Jna) { + //配置设备通道 + try { + val deviceInfo = SDKGuider.sdkGuider.devManageGuider.devList[0] + returnUserId = deviceInfo.szUserId + + aChannelNum = + deviceInfo.deviceInfoV40_jna.struDeviceV30.byChanNum.toInt() + startAChannel = + deviceInfo.deviceInfoV40_jna.struDeviceV30.byStartChan.toInt() + + dChannelNum = + deviceInfo.deviceInfoV40_jna.struDeviceV30.byIPChanNum + deviceInfo.deviceInfoV40_jna.struDeviceV30.byHighDChanNum * 256 + startDChannel = + deviceInfo.deviceInfoV40_jna.struDeviceV30.byStartChan.toInt() + + var iAnalogStartChan = startAChannel + var iDigitalStartChan = startDChannel + + val channelList = ArrayList() + + for (i in 0 until aChannelNum) { + channelList.add("ACamera_$iAnalogStartChan") + iAnalogStartChan++ + } + + for (i in 0 until dChannelNum) { + channelList.add("DCamera_$iDigitalStartChan") + iDigitalStartChan++ + } + selectChannel = Integer.valueOf(channelList[0].getChannel()) + + val streamList = ArrayList() + streamList.add("main_stream") + streamList.add("sub_stream") + streamList.add("third_stream") + + //开始预览 + if (previewHandle != -1) { + SDKGuider.sdkGuider.devPreviewGuider.RealPlay_Stop_jni(previewHandle) + } + val strutPlayInfo = NET_DVR_PREVIEWINFO() + strutPlayInfo.lChannel = selectChannel + strutPlayInfo.dwStreamType = 1 + strutPlayInfo.bBlocked = 1 + strutPlayInfo.hHwnd = binding.surfaceView.holder + previewHandle = SDKGuider.sdkGuider.devPreviewGuider.RealPlay_V40_jni( + returnUserId, strutPlayInfo, null + ) + if (previewHandle < 0) { + Log.d(kTag, "initEvent: Err:${MessageCodeHub.getErrorCode()}") + return@setOnClickListener + } + isPreviewSuccess = true + "预览开启成功".show(context) + //开始计时 + timer = Timer() + timerTask = object : TimerTask() { + override fun run() { + seconds++ + lifecycleScope.launch(Dispatchers.Main) { + binding.runningTimeView.text = seconds.toTime() + } + } + } + timer?.schedule(timerTask, 0, 1000) + } catch (e: IndexOutOfBoundsException) { + e.printStackTrace() + "设备未正常连接,无法开启预览".show(context) + } + } else { + "设备登陆失败".show(context) + } + } else { + if (!SDKGuider.sdkGuider.devPreviewGuider.RealPlay_Stop_jni(previewHandle)) { + return@setOnClickListener + } + previewHandle = -1 + isPreviewSuccess = false + "预览关闭成功".show(context) + //停止计时 + timerTask?.cancel() + timer?.cancel() + } + } + + binding.bottomButton.setOnTouchListener { _, motionEvent -> + when (motionEvent.action) { + MotionEvent.ACTION_DOWN -> { + if (isPreviewSuccess && isActionUp) { + hkSDK.NET_DVR_PTZControlWithSpeed( + previewHandle, PTZCommand.TILT_DOWN, 0, selectedSpeed + ) + isActionUp = false + } + } + + MotionEvent.ACTION_UP -> { + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.TILT_DOWN, 1) + isActionUp = true + } + } + false + } + //单张拍照 binding.imageButton.setOnClickListener { if (isPreviewSuccess) { @@ -252,278 +406,8 @@ true } - //连续拍照 - binding.multipleImageButton.setOnClickListener { - if (dataBeans.isEmpty()) { - "请先设置连续拍照步骤".show(this) - return@setOnClickListener - } - if (isPreviewSuccess) { - lifecycleScope.launch(Dispatchers.IO) { - dataBeans.forEach { - //再拍照 - if (isCaptureSuccess) { - isCaptureSuccess = false - - //先执行角度 - executeAngle(it.hAngle, it.vAngle) - - withContext(Dispatchers.Main) { - "抓取步骤${it.step}画面".show(context) - } - - val strJpeg = NET_DVR_JPEGPARA() - strJpeg.wPicQuality = 1 - strJpeg.wPicSize = 2 - - val imagePath = - "/${createImageFileDir()}/${timeFormat.format(Date())}.png" - hkSDK.NET_DVR_CaptureJPEGPicture( - returnUserId, selectChannel, strJpeg, imagePath - ) - - isCaptureSuccess = MessageCodeHub.getErrorCode() == 0 - } - } - withContext(Dispatchers.Main) { - "连续抓取画面完成".show(context) - } - } - } else { - "摄像头预览未打开,无法拍照".show(this) - } - } - - binding.addButton.setOnClickListener { - val step = if (dataBeans.isEmpty()) { - 0 - } else { - dataBeans.last().step - } - AddCameraPointDialog.Builder().setContext(this).setLastStep(step) - .setNegativeButton("取消").setPositiveButton("添加") - .setOnDialogButtonClickListener(object : - AddCameraPointDialog.OnDialogButtonClickListener { - override fun onConfirmClick(step: Int, hAngle: Int, vAngle: Int) { - DataBaseManager.get.cacheCameraPoint(step, hAngle, vAngle) - dataBeans = DataBaseManager.get.loadAllCameraPoint() - dataAdapter.setRefreshData(dataBeans) - } - - override fun onCancelClick() { - - } - }).build().show() - } - - binding.deleteButton.setOnClickListener { - if (selectedItems.isEmpty()) { - "请先选择要删除的步骤".show(this) - return@setOnClickListener - } - DataBaseManager.get.deleteCameraPoints(selectedItems) - dataBeans = DataBaseManager.get.loadAllCameraPoint() - dataAdapter.setRefreshData(dataBeans) - selectedItems.clear() - } - - binding.steeringWheelView.setOnWheelTouchListener(object : - SteeringWheelView.OnWheelTouchListener { - override fun onCenterClicked() { - if (!isPreviewSuccess) { - val deviceItem = SDKGuider.sdkGuider.devManageGuider.DeviceItem() - deviceItem.szDevName = "" - deviceItem.devNetInfo = SDKGuider.sdkGuider.devManageGuider.DevNetInfo( - ProjectConstant.HK_NET_IP, - ProjectConstant.HK_NET_PORT, - ProjectConstant.HK_NET_USERNAME, - ProjectConstant.HK_NET_PASSWORD - ) - if (deviceItem.szDevName.isEmpty()) { - deviceItem.szDevName = deviceItem.devNetInfo.szIp - } - val loginV40Jna = SDKGuider.sdkGuider.devManageGuider.login_v40_jna( - deviceItem.szDevName, deviceItem.devNetInfo - ) - if (loginV40Jna) { - //配置设备通道 - try { - val deviceInfo = SDKGuider.sdkGuider.devManageGuider.devList[0] - returnUserId = deviceInfo.szUserId - - aChannelNum = - deviceInfo.deviceInfoV40_jna.struDeviceV30.byChanNum.toInt() - startAChannel = - deviceInfo.deviceInfoV40_jna.struDeviceV30.byStartChan.toInt() - - dChannelNum = - deviceInfo.deviceInfoV40_jna.struDeviceV30.byIPChanNum + deviceInfo.deviceInfoV40_jna.struDeviceV30.byHighDChanNum * 256 - startDChannel = - deviceInfo.deviceInfoV40_jna.struDeviceV30.byStartChan.toInt() - - var iAnalogStartChan = startAChannel - var iDigitalStartChan = startDChannel - - val channelList = ArrayList() - - for (i in 0 until aChannelNum) { - channelList.add("ACamera_$iAnalogStartChan") - iAnalogStartChan++ - } - - for (i in 0 until dChannelNum) { - channelList.add("DCamera_$iDigitalStartChan") - iDigitalStartChan++ - } - selectChannel = Integer.valueOf(channelList[0].getChannel()) - - val streamList = ArrayList() - streamList.add("main_stream") - streamList.add("sub_stream") - streamList.add("third_stream") - - //开始预览 - if (previewHandle != -1) { - SDKGuider.sdkGuider.devPreviewGuider.RealPlay_Stop_jni(previewHandle) - } - val strutPlayInfo = NET_DVR_PREVIEWINFO() - strutPlayInfo.lChannel = selectChannel - strutPlayInfo.dwStreamType = 1 - strutPlayInfo.bBlocked = 1 - strutPlayInfo.hHwnd = binding.surfaceView.holder - previewHandle = SDKGuider.sdkGuider.devPreviewGuider.RealPlay_V40_jni( - returnUserId, strutPlayInfo, null - ) - if (previewHandle < 0) { - Log.d(kTag, "initEvent: Err:${MessageCodeHub.getErrorCode()}") - return - } - isPreviewSuccess = true - "预览开启成功".show(context) - //开始计时 - timer = Timer() - timerTask = object : TimerTask() { - override fun run() { - seconds++ - lifecycleScope.launch(Dispatchers.Main) { - binding.runningTimeView.text = seconds.toTime() - } - } - } - timer?.schedule(timerTask, 0, 1000) - } catch (e: IndexOutOfBoundsException) { - e.printStackTrace() - "设备未正常连接,无法开启预览".show(context) - } - } else { - "设备登陆失败".show(context) - } - } else { - if (!SDKGuider.sdkGuider.devPreviewGuider.RealPlay_Stop_jni(previewHandle)) { - return - } - previewHandle = -1 - isPreviewSuccess = false - "预览关闭成功".show(context) - //停止计时 - timerTask?.cancel() - timer?.cancel() - } - } - - override fun onLeftTurn() { - if (isPreviewSuccess && isActionUp) { - hkSDK.NET_DVR_PTZControlWithSpeed( - previewHandle, PTZCommand.PAN_LEFT, 0, selectedSpeed - ) - isActionUp = false - } - } - - override fun onTopTurn() { - if (isPreviewSuccess && isActionUp) { - hkSDK.NET_DVR_PTZControlWithSpeed( - previewHandle, PTZCommand.TILT_UP, 0, selectedSpeed - ) - isActionUp = false - } - } - - override fun onRightTurn() { - if (isPreviewSuccess && isActionUp) { - hkSDK.NET_DVR_PTZControlWithSpeed( - previewHandle, PTZCommand.PAN_RIGHT, 0, selectedSpeed - ) - isActionUp = false - } - } - - override fun onBottomTurn() { - if (isPreviewSuccess && isActionUp) { - hkSDK.NET_DVR_PTZControlWithSpeed( - previewHandle, PTZCommand.TILT_DOWN, 0, selectedSpeed - ) - isActionUp = false - } - } - - override fun onActionTurnUp(dir: SteeringWheelView.Direction) { - when (dir) { - SteeringWheelView.Direction.LEFT -> { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.PAN_LEFT, 1) - isActionUp = true - } - - SteeringWheelView.Direction.TOP -> { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.TILT_UP, 1) - isActionUp = true - } - - SteeringWheelView.Direction.RIGHT -> { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.PAN_RIGHT, 1) - isActionUp = true - } - - SteeringWheelView.Direction.BOTTOM -> { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.TILT_DOWN, 1) - isActionUp = true - } - } - } - }) - - binding.upScaleButton.setOnTouchListener { _, event -> - when (event.action) { - MotionEvent.ACTION_DOWN -> { - if (isPreviewSuccess && isScaleButtonUp) { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_IN, 0) - isScaleButtonUp = false - } - } - - MotionEvent.ACTION_UP -> { - isScaleButtonUp = true - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_IN, 1) - } - } - false - } - - binding.downScaleButton.setOnTouchListener { _, event -> - when (event.action) { - MotionEvent.ACTION_DOWN -> { - if (isPreviewSuccess && isScaleButtonUp) { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_OUT, 0) - isScaleButtonUp = false - } - } - - MotionEvent.ACTION_UP -> { - isScaleButtonUp = true - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_OUT, 1) - } - } - false + binding.resetButton.setOnClickListener { + executeAngle(0, 0) } } diff --git a/app/src/main/res/drawable/bg_solid_layout_blue_10.xml b/app/src/main/res/drawable/bg_solid_layout_blue_10.xml new file mode 100644 index 0000000..b7e06e3 --- /dev/null +++ b/app/src/main/res/drawable/bg_solid_layout_blue_10.xml @@ -0,0 +1,7 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_stroke_layout_blue_10.xml b/app/src/main/res/drawable/bg_stroke_layout_blue_10.xml deleted file mode 100644 index d6f55c9..0000000 --- a/app/src/main/res/drawable/bg_stroke_layout_blue_10.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_camera.xml b/app/src/main/res/drawable/ic_camera.xml new file mode 100644 index 0000000..1f7ab22 --- /dev/null +++ b/app/src/main/res/drawable/ic_camera.xml @@ -0,0 +1,15 @@ + + + + + diff --git a/app/src/main/res/drawable/ic_dir_down.xml b/app/src/main/res/drawable/ic_dir_down.xml deleted file mode 100644 index e6807dc..0000000 --- a/app/src/main/res/drawable/ic_dir_down.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/build.gradle b/app/build.gradle index c2a2c53..64d4d0c 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -72,7 +72,7 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5.4' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.8' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.cardview:cardview:1.0.0' diff --git a/app/src/main/java/com/casic/endoscope/adapter/CameraPointAdapter.kt b/app/src/main/java/com/casic/endoscope/adapter/CameraPointAdapter.kt deleted file mode 100644 index fe404b2..0000000 --- a/app/src/main/java/com/casic/endoscope/adapter/CameraPointAdapter.kt +++ /dev/null @@ -1,78 +0,0 @@ -package com.casic.endoscope.adapter - -import android.annotation.SuppressLint -import android.content.Context -import android.graphics.Color -import android.view.LayoutInflater -import android.view.ViewGroup -import android.widget.LinearLayout -import androidx.recyclerview.widget.RecyclerView -import com.casic.endoscope.R -import com.casic.endoscope.bean.CameraPointBean -import com.pengxh.kt.lite.adapter.ViewHolder -import com.pengxh.kt.lite.extensions.convertColor - -class CameraPointAdapter( - private val context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var multipleSelected = mutableSetOf() - private var selectedItems = ArrayList() - - override fun getItemCount(): Int = dataRows.size - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { - return ViewHolder( - LayoutInflater.from(context).inflate(R.layout.item_point_list_rv, parent, false) - ) - } - - @SuppressLint("NotifyDataSetChanged") - fun setRefreshData(dataRows: MutableList) { - this.dataRows.clear() - this.dataRows.addAll(dataRows) - notifyDataSetChanged() - multipleSelected.clear() - selectedItems.clear() - } - - override fun onBindViewHolder(holder: ViewHolder, position: Int) { - val item = dataRows[position] - holder.setText(R.id.stepNameView, "步骤 ${item.step}") - .setText(R.id.hAngleView, "水平角度 ${item.hAngle}°") - .setText(R.id.vAngleView, "垂直角度 ${item.vAngle}°") - - val linearLayout = holder.itemView.findViewById(R.id.rootView) - //item背景色 - if (position % 2 == 0) { - linearLayout.setBackgroundColor(Color.parseColor("#C8E3F4")) - } else { - linearLayout.setBackgroundColor(R.color.backgroundColor.convertColor(context)) - } - - holder.itemView.isSelected = multipleSelected.contains(position) - holder.itemView.setOnClickListener { - if (multipleSelected.contains(position)) { - multipleSelected.remove(position) - selectedItems.remove(dataRows[position]) - holder.itemView.isSelected = false - } else { - multipleSelected.add(position) - selectedItems.add(dataRows[position]) - holder.itemView.isSelected = true - } - - itemCheckedListener?.onItemChecked(position, selectedItems) - } - } - - private var itemCheckedListener: OnItemCheckedListener? = null - - interface OnItemCheckedListener { - fun onItemChecked(position: Int, items: ArrayList) - } - - fun setOnItemCheckedListener(listener: OnItemCheckedListener) { - itemCheckedListener = listener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/endoscope/bean/CameraPointBean.java b/app/src/main/java/com/casic/endoscope/bean/CameraPointBean.java deleted file mode 100644 index 3a20d82..0000000 --- a/app/src/main/java/com/casic/endoscope/bean/CameraPointBean.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.casic.endoscope.bean; - -import org.greenrobot.greendao.annotation.Entity; -import org.greenrobot.greendao.annotation.Generated; -import org.greenrobot.greendao.annotation.Id; - -/** - * 必须是java,不能是kt - */ -@Entity -public class CameraPointBean { - - @Id(autoincrement = true) - private Long id;//主键自增 - - private int step;//步骤序号 - private int hAngle;//水平角度 - private int vAngle;//垂直角度 - - @Generated(hash = 1436018650) - public CameraPointBean(Long id, int step, int hAngle, int vAngle) { - this.id = id; - this.step = step; - this.hAngle = hAngle; - this.vAngle = vAngle; - } - - @Generated(hash = 44086073) - public CameraPointBean() { - } - - public Long getId() { - return this.id; - } - - public void setId(Long id) { - this.id = id; - } - - public int getStep() { - return this.step; - } - - public void setStep(int step) { - this.step = step; - } - - public int getHAngle() { - return this.hAngle; - } - - public void setHAngle(int hAngle) { - this.hAngle = hAngle; - } - - public int getVAngle() { - return this.vAngle; - } - - public void setVAngle(int vAngle) { - this.vAngle = vAngle; - } -} diff --git a/app/src/main/java/com/casic/endoscope/bean/GasValueBean.java b/app/src/main/java/com/casic/endoscope/bean/GasValueBean.java new file mode 100644 index 0000000..6537b9a --- /dev/null +++ b/app/src/main/java/com/casic/endoscope/bean/GasValueBean.java @@ -0,0 +1,63 @@ +package com.casic.endoscope.bean; + +import org.greenrobot.greendao.annotation.Entity; +import org.greenrobot.greendao.annotation.Generated; +import org.greenrobot.greendao.annotation.Id; + +/** + * 必须是java,不能是kt + * 甲烷浓度表结构 + */ +@Entity +public class GasValueBean { + @Id(autoincrement = true) + private Long id;//主键自增 + + private String time;//采集浓度的时间 + private int value;//采集的浓度 + private String location;//浓度采集点位置 + + @Generated(hash = 663679791) + public GasValueBean(Long id, String time, int value, String location) { + this.id = id; + this.time = time; + this.value = value; + this.location = location; + } + + @Generated(hash = 291409217) + public GasValueBean() { + } + + public Long getId() { + return this.id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getTime() { + return this.time; + } + + public void setTime(String time) { + this.time = time; + } + + public int getValue() { + return this.value; + } + + public void setValue(int value) { + this.value = value; + } + + public String getLocation() { + return this.location; + } + + public void setLocation(String location) { + this.location = location; + } +} diff --git a/app/src/main/java/com/casic/endoscope/greendao/CameraPointBeanDao.java b/app/src/main/java/com/casic/endoscope/greendao/CameraPointBeanDao.java deleted file mode 100644 index 11bc932..0000000 --- a/app/src/main/java/com/casic/endoscope/greendao/CameraPointBeanDao.java +++ /dev/null @@ -1,138 +0,0 @@ -package com.casic.endoscope.greendao; - -import android.database.Cursor; -import android.database.sqlite.SQLiteStatement; - -import com.casic.endoscope.bean.CameraPointBean; - -import org.greenrobot.greendao.AbstractDao; -import org.greenrobot.greendao.Property; -import org.greenrobot.greendao.database.Database; -import org.greenrobot.greendao.database.DatabaseStatement; -import org.greenrobot.greendao.internal.DaoConfig; - -// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. - -/** - * DAO for table "CAMERA_POINT_BEAN". - */ -public class CameraPointBeanDao extends AbstractDao { - - public static final String TABLENAME = "CAMERA_POINT_BEAN"; - - /** - * Properties of entity CameraPointBean.
- * Can be used for QueryBuilder and for referencing column names. - */ - public static class Properties { - public final static Property Id = new Property(0, Long.class, "id", true, "_id"); - public final static Property Step = new Property(1, int.class, "step", false, "STEP"); - public final static Property HAngle = new Property(2, int.class, "hAngle", false, "H_ANGLE"); - public final static Property VAngle = new Property(3, int.class, "vAngle", false, "V_ANGLE"); - } - - - public CameraPointBeanDao(DaoConfig config) { - super(config); - } - - public CameraPointBeanDao(DaoConfig config, DaoSession daoSession) { - super(config, daoSession); - } - - /** - * Creates the underlying database table. - */ - public static void createTable(Database db, boolean ifNotExists) { - String constraint = ifNotExists ? "IF NOT EXISTS " : ""; - db.execSQL("CREATE TABLE " + constraint + "\"CAMERA_POINT_BEAN\" (" + // - "\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id - "\"STEP\" INTEGER NOT NULL ," + // 1: step - "\"H_ANGLE\" INTEGER NOT NULL ," + // 2: hAngle - "\"V_ANGLE\" INTEGER NOT NULL );"); // 3: vAngle - } - - /** - * Drops the underlying database table. - */ - public static void dropTable(Database db, boolean ifExists) { - String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"CAMERA_POINT_BEAN\""; - db.execSQL(sql); - } - - @Override - protected final void bindValues(DatabaseStatement stmt, CameraPointBean entity) { - stmt.clearBindings(); - - Long id = entity.getId(); - if (id != null) { - stmt.bindLong(1, id); - } - stmt.bindLong(2, entity.getStep()); - stmt.bindLong(3, entity.getHAngle()); - stmt.bindLong(4, entity.getVAngle()); - } - - @Override - protected final void bindValues(SQLiteStatement stmt, CameraPointBean entity) { - stmt.clearBindings(); - - Long id = entity.getId(); - if (id != null) { - stmt.bindLong(1, id); - } - stmt.bindLong(2, entity.getStep()); - stmt.bindLong(3, entity.getHAngle()); - stmt.bindLong(4, entity.getVAngle()); - } - - @Override - public Long readKey(Cursor cursor, int offset) { - return cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0); - } - - @Override - public CameraPointBean readEntity(Cursor cursor, int offset) { - CameraPointBean entity = new CameraPointBean( // - cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id - cursor.getInt(offset + 1), // step - cursor.getInt(offset + 2), // hAngle - cursor.getInt(offset + 3) // vAngle - ); - return entity; - } - - @Override - public void readEntity(Cursor cursor, CameraPointBean entity, int offset) { - entity.setId(cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0)); - entity.setStep(cursor.getInt(offset + 1)); - entity.setHAngle(cursor.getInt(offset + 2)); - entity.setVAngle(cursor.getInt(offset + 3)); - } - - @Override - protected final Long updateKeyAfterInsert(CameraPointBean entity, long rowId) { - entity.setId(rowId); - return rowId; - } - - @Override - public Long getKey(CameraPointBean entity) { - if (entity != null) { - return entity.getId(); - } else { - return null; - } - } - - @Override - public boolean hasKey(CameraPointBean entity) { - return entity.getId() != null; - } - - @Override - protected final boolean isEntityUpdateable() { - return true; - } - -} diff --git a/app/src/main/java/com/casic/endoscope/greendao/DaoMaster.java b/app/src/main/java/com/casic/endoscope/greendao/DaoMaster.java index 5d4fa30..a455fd0 100644 --- a/app/src/main/java/com/casic/endoscope/greendao/DaoMaster.java +++ b/app/src/main/java/com/casic/endoscope/greendao/DaoMaster.java @@ -13,25 +13,20 @@ // THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. - /** * Master of DAO (schema version 1): knows all DAOs. */ public class DaoMaster extends AbstractDaoMaster { public static final int SCHEMA_VERSION = 1; - /** - * Creates underlying database table using DAOs. - */ + /** Creates underlying database table using DAOs. */ public static void createAllTables(Database db, boolean ifNotExists) { - CameraPointBeanDao.createTable(db, ifNotExists); + GasValueBeanDao.createTable(db, ifNotExists); } - /** - * Drops underlying database table using DAOs. - */ + /** Drops underlying database table using DAOs. */ public static void dropAllTables(Database db, boolean ifExists) { - CameraPointBeanDao.dropTable(db, ifExists); + GasValueBeanDao.dropTable(db, ifExists); } /** @@ -50,7 +45,7 @@ public DaoMaster(Database db) { super(db, SCHEMA_VERSION); - registerDaoClass(CameraPointBeanDao.class); + registerDaoClass(GasValueBeanDao.class); } public DaoSession newSession() { @@ -80,9 +75,7 @@ } } - /** - * WARNING: Drops all table on Upgrade! Use only during development. - */ + /** WARNING: Drops all table on Upgrade! Use only during development. */ public static class DevOpenHelper extends OpenHelper { public DevOpenHelper(Context context, String name) { super(context, name); diff --git a/app/src/main/java/com/casic/endoscope/greendao/DaoSession.java b/app/src/main/java/com/casic/endoscope/greendao/DaoSession.java index ed2f9c0..259243d 100644 --- a/app/src/main/java/com/casic/endoscope/greendao/DaoSession.java +++ b/app/src/main/java/com/casic/endoscope/greendao/DaoSession.java @@ -1,6 +1,6 @@ package com.casic.endoscope.greendao; -import com.casic.endoscope.bean.CameraPointBean; +import com.casic.endoscope.bean.GasValueBean; import org.greenrobot.greendao.AbstractDao; import org.greenrobot.greendao.AbstractDaoSession; @@ -19,28 +19,28 @@ */ public class DaoSession extends AbstractDaoSession { - private final DaoConfig cameraPointBeanDaoConfig; + private final DaoConfig gasValueBeanDaoConfig; - private final CameraPointBeanDao cameraPointBeanDao; + private final GasValueBeanDao gasValueBeanDao; public DaoSession(Database db, IdentityScopeType type, Map>, DaoConfig> daoConfigMap) { super(db); - cameraPointBeanDaoConfig = daoConfigMap.get(CameraPointBeanDao.class).clone(); - cameraPointBeanDaoConfig.initIdentityScope(type); + gasValueBeanDaoConfig = daoConfigMap.get(GasValueBeanDao.class).clone(); + gasValueBeanDaoConfig.initIdentityScope(type); - cameraPointBeanDao = new CameraPointBeanDao(cameraPointBeanDaoConfig, this); + gasValueBeanDao = new GasValueBeanDao(gasValueBeanDaoConfig, this); - registerDao(CameraPointBean.class, cameraPointBeanDao); + registerDao(GasValueBean.class, gasValueBeanDao); } public void clear() { - cameraPointBeanDaoConfig.clearIdentityScope(); + gasValueBeanDaoConfig.clearIdentityScope(); } - public CameraPointBeanDao getCameraPointBeanDao() { - return cameraPointBeanDao; + public GasValueBeanDao getGasValueBeanDao() { + return gasValueBeanDao; } } diff --git a/app/src/main/java/com/casic/endoscope/greendao/GasValueBeanDao.java b/app/src/main/java/com/casic/endoscope/greendao/GasValueBeanDao.java new file mode 100644 index 0000000..5149375 --- /dev/null +++ b/app/src/main/java/com/casic/endoscope/greendao/GasValueBeanDao.java @@ -0,0 +1,149 @@ +package com.casic.endoscope.greendao; + +import android.database.Cursor; +import android.database.sqlite.SQLiteStatement; + +import com.casic.endoscope.bean.GasValueBean; + +import org.greenrobot.greendao.AbstractDao; +import org.greenrobot.greendao.Property; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.database.DatabaseStatement; +import org.greenrobot.greendao.internal.DaoConfig; + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. +/** + * DAO for table "GAS_VALUE_BEAN". +*/ +public class GasValueBeanDao extends AbstractDao { + + public static final String TABLENAME = "GAS_VALUE_BEAN"; + + /** + * Properties of entity GasValueBean.
+ * Can be used for QueryBuilder and for referencing column names. + */ + public static class Properties { + public final static Property Id = new Property(0, Long.class, "id", true, "_id"); + public final static Property Time = new Property(1, String.class, "time", false, "TIME"); + public final static Property Value = new Property(2, int.class, "value", false, "VALUE"); + public final static Property Location = new Property(3, String.class, "location", false, "LOCATION"); + } + + + public GasValueBeanDao(DaoConfig config) { + super(config); + } + + public GasValueBeanDao(DaoConfig config, DaoSession daoSession) { + super(config, daoSession); + } + + /** Creates the underlying database table. */ + public static void createTable(Database db, boolean ifNotExists) { + String constraint = ifNotExists? "IF NOT EXISTS ": ""; + db.execSQL("CREATE TABLE " + constraint + "\"GAS_VALUE_BEAN\" (" + // + "\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id + "\"TIME\" TEXT," + // 1: time + "\"VALUE\" INTEGER NOT NULL ," + // 2: value + "\"LOCATION\" TEXT);"); // 3: location + } + + /** Drops the underlying database table. */ + public static void dropTable(Database db, boolean ifExists) { + String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"GAS_VALUE_BEAN\""; + db.execSQL(sql); + } + + @Override + protected final void bindValues(DatabaseStatement stmt, GasValueBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String time = entity.getTime(); + if (time != null) { + stmt.bindString(2, time); + } + stmt.bindLong(3, entity.getValue()); + + String location = entity.getLocation(); + if (location != null) { + stmt.bindString(4, location); + } + } + + @Override + protected final void bindValues(SQLiteStatement stmt, GasValueBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String time = entity.getTime(); + if (time != null) { + stmt.bindString(2, time); + } + stmt.bindLong(3, entity.getValue()); + + String location = entity.getLocation(); + if (location != null) { + stmt.bindString(4, location); + } + } + + @Override + public Long readKey(Cursor cursor, int offset) { + return cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0); + } + + @Override + public GasValueBean readEntity(Cursor cursor, int offset) { + GasValueBean entity = new GasValueBean( // + cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id + cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // time + cursor.getInt(offset + 2), // value + cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3) // location + ); + return entity; + } + + @Override + public void readEntity(Cursor cursor, GasValueBean entity, int offset) { + entity.setId(cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0)); + entity.setTime(cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1)); + entity.setValue(cursor.getInt(offset + 2)); + entity.setLocation(cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3)); + } + + @Override + protected final Long updateKeyAfterInsert(GasValueBean entity, long rowId) { + entity.setId(rowId); + return rowId; + } + + @Override + public Long getKey(GasValueBean entity) { + if(entity != null) { + return entity.getId(); + } else { + return null; + } + } + + @Override + public boolean hasKey(GasValueBean entity) { + return entity.getId() != null; + } + + @Override + protected final boolean isEntityUpdateable() { + return true; + } + +} diff --git a/app/src/main/java/com/casic/endoscope/utils/DataBaseManager.kt b/app/src/main/java/com/casic/endoscope/utils/DataBaseManager.kt index a593a5b..c683db1 100644 --- a/app/src/main/java/com/casic/endoscope/utils/DataBaseManager.kt +++ b/app/src/main/java/com/casic/endoscope/utils/DataBaseManager.kt @@ -1,8 +1,6 @@ package com.casic.endoscope.utils import com.casic.endoscope.base.BaseApplication -import com.casic.endoscope.bean.CameraPointBean -import com.casic.endoscope.greendao.CameraPointBeanDao class DataBaseManager private constructor() { @@ -13,31 +11,5 @@ } } - private var cameraPointDao = BaseApplication.get().getDaoSession().cameraPointBeanDao - - fun cacheCameraPoint(step: Int, h: Int, v: Int) { - val bean = CameraPointBean() - bean.step = step - bean.hAngle = h - bean.vAngle = v - cameraPointDao.insert(bean) - } - - fun deleteCameraPoints(beans: MutableList) { - beans.forEach { - cameraPointDao.delete(it) - } - } - - fun deleteAllCameraPoint() { - cameraPointDao.deleteAll() - } - - fun queryCameraPointById(id: Long): CameraPointBean { - return cameraPointDao.queryBuilder() - .where(CameraPointBeanDao.Properties.Id.eq(id)) - .unique() - } - - fun loadAllCameraPoint(): MutableList = cameraPointDao.loadAll() + private var gasValueBeanDao = BaseApplication.get().getDaoSession().gasValueBeanDao } \ No newline at end of file diff --git a/app/src/main/java/com/casic/endoscope/utils/EndoscopeDevOpenHelper.kt b/app/src/main/java/com/casic/endoscope/utils/EndoscopeDevOpenHelper.kt index 507b1ff..fd87f0f 100644 --- a/app/src/main/java/com/casic/endoscope/utils/EndoscopeDevOpenHelper.kt +++ b/app/src/main/java/com/casic/endoscope/utils/EndoscopeDevOpenHelper.kt @@ -2,8 +2,8 @@ import android.content.Context import android.database.sqlite.SQLiteDatabase.CursorFactory -import com.casic.endoscope.greendao.CameraPointBeanDao import com.casic.endoscope.greendao.DaoMaster +import com.casic.endoscope.greendao.GasValueBeanDao import com.github.yuweiguocn.library.greendao.MigrationHelper import com.github.yuweiguocn.library.greendao.MigrationHelper.ReCreateAllTableListener import org.greenrobot.greendao.database.Database @@ -22,7 +22,7 @@ DaoMaster.dropAllTables(db, ifExists) } }, - CameraPointBeanDao::class.java + GasValueBeanDao::class.java ) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/endoscope/view/MainActivity.kt b/app/src/main/java/com/casic/endoscope/view/MainActivity.kt index 0fe757e..c4509b0 100644 --- a/app/src/main/java/com/casic/endoscope/view/MainActivity.kt +++ b/app/src/main/java/com/casic/endoscope/view/MainActivity.kt @@ -15,8 +15,6 @@ import android.view.SurfaceHolder import android.view.View import androidx.lifecycle.lifecycleScope -import com.casic.endoscope.adapter.CameraPointAdapter -import com.casic.endoscope.bean.CameraPointBean import com.casic.endoscope.databinding.ActivityMainBinding import com.casic.endoscope.extensions.check import com.casic.endoscope.extensions.convertValue @@ -28,14 +26,12 @@ import com.casic.endoscope.extensions.init import com.casic.endoscope.extensions.toTime import com.casic.endoscope.service.VideoTranscodeService -import com.casic.endoscope.utils.DataBaseManager import com.casic.endoscope.utils.ProjectConstant import com.casic.endoscope.utils.ble.BleDeviceManager import com.casic.endoscope.utils.ble.OnDeviceConnectListener import com.casic.endoscope.utils.ble.OnDeviceDiscoveredListener import com.casic.endoscope.utils.hk.MessageCodeHub import com.casic.endoscope.utils.hk.SDKGuider -import com.casic.endoscope.widgets.AddCameraPointDialog import com.casic.endoscope.widgets.BluetoothDeviceDialog import com.casic.endoscope.widgets.LineChartMarkerView import com.github.mikephil.charting.data.Entry @@ -55,10 +51,8 @@ import com.pengxh.kt.lite.extensions.timestampToTime import com.pengxh.kt.lite.utils.LoadingDialogHub import com.pengxh.kt.lite.utils.WeakReferenceHandler -import com.pengxh.kt.lite.widget.SteeringWheelView import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch -import kotlinx.coroutines.withContext import java.text.SimpleDateFormat import java.util.Date import java.util.Locale @@ -101,17 +95,11 @@ //焦距按钮是否已松开 private var isScaleButtonUp = true - //是否拍照成功 - private var isCaptureSuccess = true - private var timer: Timer? = null private var timerTask: TimerTask? = null private var seconds = 0L - private var dataBeans: MutableList = ArrayList() - private var selectedItems: MutableList = ArrayList() private var inputVideoPath = "" private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var dataAdapter: CameraPointAdapter private lateinit var serviceIntent: Intent private lateinit var dataSet: LineDataSet private lateinit var lineData: LineData @@ -123,8 +111,6 @@ override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) - dataBeans = DataBaseManager.get.loadAllCameraPoint() - //显示数据 weakReferenceHandler.sendEmptyMessage(messageCode) @@ -147,13 +133,7 @@ override fun handleMessage(msg: Message): Boolean { if (msg.what == messageCode) { //绑定数据 - dataAdapter = CameraPointAdapter(this, dataBeans) - binding.recyclerView.adapter = dataAdapter - dataAdapter.setOnItemCheckedListener(object : CameraPointAdapter.OnItemCheckedListener { - override fun onItemChecked(position: Int, items: ArrayList) { - selectedItems = items - } - }) + } return true } @@ -209,6 +189,180 @@ } } + binding.upScaleButton.setOnTouchListener { _, event -> + when (event.action) { + MotionEvent.ACTION_DOWN -> { + if (isPreviewSuccess && isScaleButtonUp) { + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_IN, 0) + isScaleButtonUp = false + } + } + + MotionEvent.ACTION_UP -> { + isScaleButtonUp = true + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_IN, 1) + } + } + false + } + + binding.downScaleButton.setOnTouchListener { _, event -> + when (event.action) { + MotionEvent.ACTION_DOWN -> { + if (isPreviewSuccess && isScaleButtonUp) { + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_OUT, 0) + isScaleButtonUp = false + } + } + + MotionEvent.ACTION_UP -> { + isScaleButtonUp = true + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_OUT, 1) + } + } + false + } + + binding.topButton.setOnTouchListener { _, motionEvent -> + when (motionEvent.action) { + MotionEvent.ACTION_DOWN -> { + if (isPreviewSuccess && isActionUp) { + hkSDK.NET_DVR_PTZControlWithSpeed( + previewHandle, PTZCommand.TILT_UP, 0, selectedSpeed + ) + isActionUp = false + } + } + + MotionEvent.ACTION_UP -> { + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.TILT_UP, 1) + isActionUp = true + } + } + false + } + + binding.centerButton.setOnClickListener { + if (!isPreviewSuccess) { + val deviceItem = SDKGuider.sdkGuider.devManageGuider.DeviceItem() + deviceItem.szDevName = "" + deviceItem.devNetInfo = SDKGuider.sdkGuider.devManageGuider.DevNetInfo( + ProjectConstant.HK_NET_IP, + ProjectConstant.HK_NET_PORT, + ProjectConstant.HK_NET_USERNAME, + ProjectConstant.HK_NET_PASSWORD + ) + if (deviceItem.szDevName.isEmpty()) { + deviceItem.szDevName = deviceItem.devNetInfo.szIp + } + val loginV40Jna = SDKGuider.sdkGuider.devManageGuider.login_v40_jna( + deviceItem.szDevName, deviceItem.devNetInfo + ) + if (loginV40Jna) { + //配置设备通道 + try { + val deviceInfo = SDKGuider.sdkGuider.devManageGuider.devList[0] + returnUserId = deviceInfo.szUserId + + aChannelNum = + deviceInfo.deviceInfoV40_jna.struDeviceV30.byChanNum.toInt() + startAChannel = + deviceInfo.deviceInfoV40_jna.struDeviceV30.byStartChan.toInt() + + dChannelNum = + deviceInfo.deviceInfoV40_jna.struDeviceV30.byIPChanNum + deviceInfo.deviceInfoV40_jna.struDeviceV30.byHighDChanNum * 256 + startDChannel = + deviceInfo.deviceInfoV40_jna.struDeviceV30.byStartChan.toInt() + + var iAnalogStartChan = startAChannel + var iDigitalStartChan = startDChannel + + val channelList = ArrayList() + + for (i in 0 until aChannelNum) { + channelList.add("ACamera_$iAnalogStartChan") + iAnalogStartChan++ + } + + for (i in 0 until dChannelNum) { + channelList.add("DCamera_$iDigitalStartChan") + iDigitalStartChan++ + } + selectChannel = Integer.valueOf(channelList[0].getChannel()) + + val streamList = ArrayList() + streamList.add("main_stream") + streamList.add("sub_stream") + streamList.add("third_stream") + + //开始预览 + if (previewHandle != -1) { + SDKGuider.sdkGuider.devPreviewGuider.RealPlay_Stop_jni(previewHandle) + } + val strutPlayInfo = NET_DVR_PREVIEWINFO() + strutPlayInfo.lChannel = selectChannel + strutPlayInfo.dwStreamType = 1 + strutPlayInfo.bBlocked = 1 + strutPlayInfo.hHwnd = binding.surfaceView.holder + previewHandle = SDKGuider.sdkGuider.devPreviewGuider.RealPlay_V40_jni( + returnUserId, strutPlayInfo, null + ) + if (previewHandle < 0) { + Log.d(kTag, "initEvent: Err:${MessageCodeHub.getErrorCode()}") + return@setOnClickListener + } + isPreviewSuccess = true + "预览开启成功".show(context) + //开始计时 + timer = Timer() + timerTask = object : TimerTask() { + override fun run() { + seconds++ + lifecycleScope.launch(Dispatchers.Main) { + binding.runningTimeView.text = seconds.toTime() + } + } + } + timer?.schedule(timerTask, 0, 1000) + } catch (e: IndexOutOfBoundsException) { + e.printStackTrace() + "设备未正常连接,无法开启预览".show(context) + } + } else { + "设备登陆失败".show(context) + } + } else { + if (!SDKGuider.sdkGuider.devPreviewGuider.RealPlay_Stop_jni(previewHandle)) { + return@setOnClickListener + } + previewHandle = -1 + isPreviewSuccess = false + "预览关闭成功".show(context) + //停止计时 + timerTask?.cancel() + timer?.cancel() + } + } + + binding.bottomButton.setOnTouchListener { _, motionEvent -> + when (motionEvent.action) { + MotionEvent.ACTION_DOWN -> { + if (isPreviewSuccess && isActionUp) { + hkSDK.NET_DVR_PTZControlWithSpeed( + previewHandle, PTZCommand.TILT_DOWN, 0, selectedSpeed + ) + isActionUp = false + } + } + + MotionEvent.ACTION_UP -> { + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.TILT_DOWN, 1) + isActionUp = true + } + } + false + } + //单张拍照 binding.imageButton.setOnClickListener { if (isPreviewSuccess) { @@ -252,278 +406,8 @@ true } - //连续拍照 - binding.multipleImageButton.setOnClickListener { - if (dataBeans.isEmpty()) { - "请先设置连续拍照步骤".show(this) - return@setOnClickListener - } - if (isPreviewSuccess) { - lifecycleScope.launch(Dispatchers.IO) { - dataBeans.forEach { - //再拍照 - if (isCaptureSuccess) { - isCaptureSuccess = false - - //先执行角度 - executeAngle(it.hAngle, it.vAngle) - - withContext(Dispatchers.Main) { - "抓取步骤${it.step}画面".show(context) - } - - val strJpeg = NET_DVR_JPEGPARA() - strJpeg.wPicQuality = 1 - strJpeg.wPicSize = 2 - - val imagePath = - "/${createImageFileDir()}/${timeFormat.format(Date())}.png" - hkSDK.NET_DVR_CaptureJPEGPicture( - returnUserId, selectChannel, strJpeg, imagePath - ) - - isCaptureSuccess = MessageCodeHub.getErrorCode() == 0 - } - } - withContext(Dispatchers.Main) { - "连续抓取画面完成".show(context) - } - } - } else { - "摄像头预览未打开,无法拍照".show(this) - } - } - - binding.addButton.setOnClickListener { - val step = if (dataBeans.isEmpty()) { - 0 - } else { - dataBeans.last().step - } - AddCameraPointDialog.Builder().setContext(this).setLastStep(step) - .setNegativeButton("取消").setPositiveButton("添加") - .setOnDialogButtonClickListener(object : - AddCameraPointDialog.OnDialogButtonClickListener { - override fun onConfirmClick(step: Int, hAngle: Int, vAngle: Int) { - DataBaseManager.get.cacheCameraPoint(step, hAngle, vAngle) - dataBeans = DataBaseManager.get.loadAllCameraPoint() - dataAdapter.setRefreshData(dataBeans) - } - - override fun onCancelClick() { - - } - }).build().show() - } - - binding.deleteButton.setOnClickListener { - if (selectedItems.isEmpty()) { - "请先选择要删除的步骤".show(this) - return@setOnClickListener - } - DataBaseManager.get.deleteCameraPoints(selectedItems) - dataBeans = DataBaseManager.get.loadAllCameraPoint() - dataAdapter.setRefreshData(dataBeans) - selectedItems.clear() - } - - binding.steeringWheelView.setOnWheelTouchListener(object : - SteeringWheelView.OnWheelTouchListener { - override fun onCenterClicked() { - if (!isPreviewSuccess) { - val deviceItem = SDKGuider.sdkGuider.devManageGuider.DeviceItem() - deviceItem.szDevName = "" - deviceItem.devNetInfo = SDKGuider.sdkGuider.devManageGuider.DevNetInfo( - ProjectConstant.HK_NET_IP, - ProjectConstant.HK_NET_PORT, - ProjectConstant.HK_NET_USERNAME, - ProjectConstant.HK_NET_PASSWORD - ) - if (deviceItem.szDevName.isEmpty()) { - deviceItem.szDevName = deviceItem.devNetInfo.szIp - } - val loginV40Jna = SDKGuider.sdkGuider.devManageGuider.login_v40_jna( - deviceItem.szDevName, deviceItem.devNetInfo - ) - if (loginV40Jna) { - //配置设备通道 - try { - val deviceInfo = SDKGuider.sdkGuider.devManageGuider.devList[0] - returnUserId = deviceInfo.szUserId - - aChannelNum = - deviceInfo.deviceInfoV40_jna.struDeviceV30.byChanNum.toInt() - startAChannel = - deviceInfo.deviceInfoV40_jna.struDeviceV30.byStartChan.toInt() - - dChannelNum = - deviceInfo.deviceInfoV40_jna.struDeviceV30.byIPChanNum + deviceInfo.deviceInfoV40_jna.struDeviceV30.byHighDChanNum * 256 - startDChannel = - deviceInfo.deviceInfoV40_jna.struDeviceV30.byStartChan.toInt() - - var iAnalogStartChan = startAChannel - var iDigitalStartChan = startDChannel - - val channelList = ArrayList() - - for (i in 0 until aChannelNum) { - channelList.add("ACamera_$iAnalogStartChan") - iAnalogStartChan++ - } - - for (i in 0 until dChannelNum) { - channelList.add("DCamera_$iDigitalStartChan") - iDigitalStartChan++ - } - selectChannel = Integer.valueOf(channelList[0].getChannel()) - - val streamList = ArrayList() - streamList.add("main_stream") - streamList.add("sub_stream") - streamList.add("third_stream") - - //开始预览 - if (previewHandle != -1) { - SDKGuider.sdkGuider.devPreviewGuider.RealPlay_Stop_jni(previewHandle) - } - val strutPlayInfo = NET_DVR_PREVIEWINFO() - strutPlayInfo.lChannel = selectChannel - strutPlayInfo.dwStreamType = 1 - strutPlayInfo.bBlocked = 1 - strutPlayInfo.hHwnd = binding.surfaceView.holder - previewHandle = SDKGuider.sdkGuider.devPreviewGuider.RealPlay_V40_jni( - returnUserId, strutPlayInfo, null - ) - if (previewHandle < 0) { - Log.d(kTag, "initEvent: Err:${MessageCodeHub.getErrorCode()}") - return - } - isPreviewSuccess = true - "预览开启成功".show(context) - //开始计时 - timer = Timer() - timerTask = object : TimerTask() { - override fun run() { - seconds++ - lifecycleScope.launch(Dispatchers.Main) { - binding.runningTimeView.text = seconds.toTime() - } - } - } - timer?.schedule(timerTask, 0, 1000) - } catch (e: IndexOutOfBoundsException) { - e.printStackTrace() - "设备未正常连接,无法开启预览".show(context) - } - } else { - "设备登陆失败".show(context) - } - } else { - if (!SDKGuider.sdkGuider.devPreviewGuider.RealPlay_Stop_jni(previewHandle)) { - return - } - previewHandle = -1 - isPreviewSuccess = false - "预览关闭成功".show(context) - //停止计时 - timerTask?.cancel() - timer?.cancel() - } - } - - override fun onLeftTurn() { - if (isPreviewSuccess && isActionUp) { - hkSDK.NET_DVR_PTZControlWithSpeed( - previewHandle, PTZCommand.PAN_LEFT, 0, selectedSpeed - ) - isActionUp = false - } - } - - override fun onTopTurn() { - if (isPreviewSuccess && isActionUp) { - hkSDK.NET_DVR_PTZControlWithSpeed( - previewHandle, PTZCommand.TILT_UP, 0, selectedSpeed - ) - isActionUp = false - } - } - - override fun onRightTurn() { - if (isPreviewSuccess && isActionUp) { - hkSDK.NET_DVR_PTZControlWithSpeed( - previewHandle, PTZCommand.PAN_RIGHT, 0, selectedSpeed - ) - isActionUp = false - } - } - - override fun onBottomTurn() { - if (isPreviewSuccess && isActionUp) { - hkSDK.NET_DVR_PTZControlWithSpeed( - previewHandle, PTZCommand.TILT_DOWN, 0, selectedSpeed - ) - isActionUp = false - } - } - - override fun onActionTurnUp(dir: SteeringWheelView.Direction) { - when (dir) { - SteeringWheelView.Direction.LEFT -> { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.PAN_LEFT, 1) - isActionUp = true - } - - SteeringWheelView.Direction.TOP -> { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.TILT_UP, 1) - isActionUp = true - } - - SteeringWheelView.Direction.RIGHT -> { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.PAN_RIGHT, 1) - isActionUp = true - } - - SteeringWheelView.Direction.BOTTOM -> { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.TILT_DOWN, 1) - isActionUp = true - } - } - } - }) - - binding.upScaleButton.setOnTouchListener { _, event -> - when (event.action) { - MotionEvent.ACTION_DOWN -> { - if (isPreviewSuccess && isScaleButtonUp) { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_IN, 0) - isScaleButtonUp = false - } - } - - MotionEvent.ACTION_UP -> { - isScaleButtonUp = true - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_IN, 1) - } - } - false - } - - binding.downScaleButton.setOnTouchListener { _, event -> - when (event.action) { - MotionEvent.ACTION_DOWN -> { - if (isPreviewSuccess && isScaleButtonUp) { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_OUT, 0) - isScaleButtonUp = false - } - } - - MotionEvent.ACTION_UP -> { - isScaleButtonUp = true - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_OUT, 1) - } - } - false + binding.resetButton.setOnClickListener { + executeAngle(0, 0) } } diff --git a/app/src/main/res/drawable/bg_solid_layout_blue_10.xml b/app/src/main/res/drawable/bg_solid_layout_blue_10.xml new file mode 100644 index 0000000..b7e06e3 --- /dev/null +++ b/app/src/main/res/drawable/bg_solid_layout_blue_10.xml @@ -0,0 +1,7 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_stroke_layout_blue_10.xml b/app/src/main/res/drawable/bg_stroke_layout_blue_10.xml deleted file mode 100644 index d6f55c9..0000000 --- a/app/src/main/res/drawable/bg_stroke_layout_blue_10.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_camera.xml b/app/src/main/res/drawable/ic_camera.xml new file mode 100644 index 0000000..1f7ab22 --- /dev/null +++ b/app/src/main/res/drawable/ic_camera.xml @@ -0,0 +1,15 @@ + + + + + diff --git a/app/src/main/res/drawable/ic_dir_down.xml b/app/src/main/res/drawable/ic_dir_down.xml deleted file mode 100644 index e6807dc..0000000 --- a/app/src/main/res/drawable/ic_dir_down.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_dir_left.xml b/app/src/main/res/drawable/ic_dir_left.xml deleted file mode 100644 index 12b2237..0000000 --- a/app/src/main/res/drawable/ic_dir_left.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/build.gradle b/app/build.gradle index c2a2c53..64d4d0c 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -72,7 +72,7 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5.4' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.8' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.cardview:cardview:1.0.0' diff --git a/app/src/main/java/com/casic/endoscope/adapter/CameraPointAdapter.kt b/app/src/main/java/com/casic/endoscope/adapter/CameraPointAdapter.kt deleted file mode 100644 index fe404b2..0000000 --- a/app/src/main/java/com/casic/endoscope/adapter/CameraPointAdapter.kt +++ /dev/null @@ -1,78 +0,0 @@ -package com.casic.endoscope.adapter - -import android.annotation.SuppressLint -import android.content.Context -import android.graphics.Color -import android.view.LayoutInflater -import android.view.ViewGroup -import android.widget.LinearLayout -import androidx.recyclerview.widget.RecyclerView -import com.casic.endoscope.R -import com.casic.endoscope.bean.CameraPointBean -import com.pengxh.kt.lite.adapter.ViewHolder -import com.pengxh.kt.lite.extensions.convertColor - -class CameraPointAdapter( - private val context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var multipleSelected = mutableSetOf() - private var selectedItems = ArrayList() - - override fun getItemCount(): Int = dataRows.size - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { - return ViewHolder( - LayoutInflater.from(context).inflate(R.layout.item_point_list_rv, parent, false) - ) - } - - @SuppressLint("NotifyDataSetChanged") - fun setRefreshData(dataRows: MutableList) { - this.dataRows.clear() - this.dataRows.addAll(dataRows) - notifyDataSetChanged() - multipleSelected.clear() - selectedItems.clear() - } - - override fun onBindViewHolder(holder: ViewHolder, position: Int) { - val item = dataRows[position] - holder.setText(R.id.stepNameView, "步骤 ${item.step}") - .setText(R.id.hAngleView, "水平角度 ${item.hAngle}°") - .setText(R.id.vAngleView, "垂直角度 ${item.vAngle}°") - - val linearLayout = holder.itemView.findViewById(R.id.rootView) - //item背景色 - if (position % 2 == 0) { - linearLayout.setBackgroundColor(Color.parseColor("#C8E3F4")) - } else { - linearLayout.setBackgroundColor(R.color.backgroundColor.convertColor(context)) - } - - holder.itemView.isSelected = multipleSelected.contains(position) - holder.itemView.setOnClickListener { - if (multipleSelected.contains(position)) { - multipleSelected.remove(position) - selectedItems.remove(dataRows[position]) - holder.itemView.isSelected = false - } else { - multipleSelected.add(position) - selectedItems.add(dataRows[position]) - holder.itemView.isSelected = true - } - - itemCheckedListener?.onItemChecked(position, selectedItems) - } - } - - private var itemCheckedListener: OnItemCheckedListener? = null - - interface OnItemCheckedListener { - fun onItemChecked(position: Int, items: ArrayList) - } - - fun setOnItemCheckedListener(listener: OnItemCheckedListener) { - itemCheckedListener = listener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/endoscope/bean/CameraPointBean.java b/app/src/main/java/com/casic/endoscope/bean/CameraPointBean.java deleted file mode 100644 index 3a20d82..0000000 --- a/app/src/main/java/com/casic/endoscope/bean/CameraPointBean.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.casic.endoscope.bean; - -import org.greenrobot.greendao.annotation.Entity; -import org.greenrobot.greendao.annotation.Generated; -import org.greenrobot.greendao.annotation.Id; - -/** - * 必须是java,不能是kt - */ -@Entity -public class CameraPointBean { - - @Id(autoincrement = true) - private Long id;//主键自增 - - private int step;//步骤序号 - private int hAngle;//水平角度 - private int vAngle;//垂直角度 - - @Generated(hash = 1436018650) - public CameraPointBean(Long id, int step, int hAngle, int vAngle) { - this.id = id; - this.step = step; - this.hAngle = hAngle; - this.vAngle = vAngle; - } - - @Generated(hash = 44086073) - public CameraPointBean() { - } - - public Long getId() { - return this.id; - } - - public void setId(Long id) { - this.id = id; - } - - public int getStep() { - return this.step; - } - - public void setStep(int step) { - this.step = step; - } - - public int getHAngle() { - return this.hAngle; - } - - public void setHAngle(int hAngle) { - this.hAngle = hAngle; - } - - public int getVAngle() { - return this.vAngle; - } - - public void setVAngle(int vAngle) { - this.vAngle = vAngle; - } -} diff --git a/app/src/main/java/com/casic/endoscope/bean/GasValueBean.java b/app/src/main/java/com/casic/endoscope/bean/GasValueBean.java new file mode 100644 index 0000000..6537b9a --- /dev/null +++ b/app/src/main/java/com/casic/endoscope/bean/GasValueBean.java @@ -0,0 +1,63 @@ +package com.casic.endoscope.bean; + +import org.greenrobot.greendao.annotation.Entity; +import org.greenrobot.greendao.annotation.Generated; +import org.greenrobot.greendao.annotation.Id; + +/** + * 必须是java,不能是kt + * 甲烷浓度表结构 + */ +@Entity +public class GasValueBean { + @Id(autoincrement = true) + private Long id;//主键自增 + + private String time;//采集浓度的时间 + private int value;//采集的浓度 + private String location;//浓度采集点位置 + + @Generated(hash = 663679791) + public GasValueBean(Long id, String time, int value, String location) { + this.id = id; + this.time = time; + this.value = value; + this.location = location; + } + + @Generated(hash = 291409217) + public GasValueBean() { + } + + public Long getId() { + return this.id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getTime() { + return this.time; + } + + public void setTime(String time) { + this.time = time; + } + + public int getValue() { + return this.value; + } + + public void setValue(int value) { + this.value = value; + } + + public String getLocation() { + return this.location; + } + + public void setLocation(String location) { + this.location = location; + } +} diff --git a/app/src/main/java/com/casic/endoscope/greendao/CameraPointBeanDao.java b/app/src/main/java/com/casic/endoscope/greendao/CameraPointBeanDao.java deleted file mode 100644 index 11bc932..0000000 --- a/app/src/main/java/com/casic/endoscope/greendao/CameraPointBeanDao.java +++ /dev/null @@ -1,138 +0,0 @@ -package com.casic.endoscope.greendao; - -import android.database.Cursor; -import android.database.sqlite.SQLiteStatement; - -import com.casic.endoscope.bean.CameraPointBean; - -import org.greenrobot.greendao.AbstractDao; -import org.greenrobot.greendao.Property; -import org.greenrobot.greendao.database.Database; -import org.greenrobot.greendao.database.DatabaseStatement; -import org.greenrobot.greendao.internal.DaoConfig; - -// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. - -/** - * DAO for table "CAMERA_POINT_BEAN". - */ -public class CameraPointBeanDao extends AbstractDao { - - public static final String TABLENAME = "CAMERA_POINT_BEAN"; - - /** - * Properties of entity CameraPointBean.
- * Can be used for QueryBuilder and for referencing column names. - */ - public static class Properties { - public final static Property Id = new Property(0, Long.class, "id", true, "_id"); - public final static Property Step = new Property(1, int.class, "step", false, "STEP"); - public final static Property HAngle = new Property(2, int.class, "hAngle", false, "H_ANGLE"); - public final static Property VAngle = new Property(3, int.class, "vAngle", false, "V_ANGLE"); - } - - - public CameraPointBeanDao(DaoConfig config) { - super(config); - } - - public CameraPointBeanDao(DaoConfig config, DaoSession daoSession) { - super(config, daoSession); - } - - /** - * Creates the underlying database table. - */ - public static void createTable(Database db, boolean ifNotExists) { - String constraint = ifNotExists ? "IF NOT EXISTS " : ""; - db.execSQL("CREATE TABLE " + constraint + "\"CAMERA_POINT_BEAN\" (" + // - "\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id - "\"STEP\" INTEGER NOT NULL ," + // 1: step - "\"H_ANGLE\" INTEGER NOT NULL ," + // 2: hAngle - "\"V_ANGLE\" INTEGER NOT NULL );"); // 3: vAngle - } - - /** - * Drops the underlying database table. - */ - public static void dropTable(Database db, boolean ifExists) { - String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"CAMERA_POINT_BEAN\""; - db.execSQL(sql); - } - - @Override - protected final void bindValues(DatabaseStatement stmt, CameraPointBean entity) { - stmt.clearBindings(); - - Long id = entity.getId(); - if (id != null) { - stmt.bindLong(1, id); - } - stmt.bindLong(2, entity.getStep()); - stmt.bindLong(3, entity.getHAngle()); - stmt.bindLong(4, entity.getVAngle()); - } - - @Override - protected final void bindValues(SQLiteStatement stmt, CameraPointBean entity) { - stmt.clearBindings(); - - Long id = entity.getId(); - if (id != null) { - stmt.bindLong(1, id); - } - stmt.bindLong(2, entity.getStep()); - stmt.bindLong(3, entity.getHAngle()); - stmt.bindLong(4, entity.getVAngle()); - } - - @Override - public Long readKey(Cursor cursor, int offset) { - return cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0); - } - - @Override - public CameraPointBean readEntity(Cursor cursor, int offset) { - CameraPointBean entity = new CameraPointBean( // - cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id - cursor.getInt(offset + 1), // step - cursor.getInt(offset + 2), // hAngle - cursor.getInt(offset + 3) // vAngle - ); - return entity; - } - - @Override - public void readEntity(Cursor cursor, CameraPointBean entity, int offset) { - entity.setId(cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0)); - entity.setStep(cursor.getInt(offset + 1)); - entity.setHAngle(cursor.getInt(offset + 2)); - entity.setVAngle(cursor.getInt(offset + 3)); - } - - @Override - protected final Long updateKeyAfterInsert(CameraPointBean entity, long rowId) { - entity.setId(rowId); - return rowId; - } - - @Override - public Long getKey(CameraPointBean entity) { - if (entity != null) { - return entity.getId(); - } else { - return null; - } - } - - @Override - public boolean hasKey(CameraPointBean entity) { - return entity.getId() != null; - } - - @Override - protected final boolean isEntityUpdateable() { - return true; - } - -} diff --git a/app/src/main/java/com/casic/endoscope/greendao/DaoMaster.java b/app/src/main/java/com/casic/endoscope/greendao/DaoMaster.java index 5d4fa30..a455fd0 100644 --- a/app/src/main/java/com/casic/endoscope/greendao/DaoMaster.java +++ b/app/src/main/java/com/casic/endoscope/greendao/DaoMaster.java @@ -13,25 +13,20 @@ // THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. - /** * Master of DAO (schema version 1): knows all DAOs. */ public class DaoMaster extends AbstractDaoMaster { public static final int SCHEMA_VERSION = 1; - /** - * Creates underlying database table using DAOs. - */ + /** Creates underlying database table using DAOs. */ public static void createAllTables(Database db, boolean ifNotExists) { - CameraPointBeanDao.createTable(db, ifNotExists); + GasValueBeanDao.createTable(db, ifNotExists); } - /** - * Drops underlying database table using DAOs. - */ + /** Drops underlying database table using DAOs. */ public static void dropAllTables(Database db, boolean ifExists) { - CameraPointBeanDao.dropTable(db, ifExists); + GasValueBeanDao.dropTable(db, ifExists); } /** @@ -50,7 +45,7 @@ public DaoMaster(Database db) { super(db, SCHEMA_VERSION); - registerDaoClass(CameraPointBeanDao.class); + registerDaoClass(GasValueBeanDao.class); } public DaoSession newSession() { @@ -80,9 +75,7 @@ } } - /** - * WARNING: Drops all table on Upgrade! Use only during development. - */ + /** WARNING: Drops all table on Upgrade! Use only during development. */ public static class DevOpenHelper extends OpenHelper { public DevOpenHelper(Context context, String name) { super(context, name); diff --git a/app/src/main/java/com/casic/endoscope/greendao/DaoSession.java b/app/src/main/java/com/casic/endoscope/greendao/DaoSession.java index ed2f9c0..259243d 100644 --- a/app/src/main/java/com/casic/endoscope/greendao/DaoSession.java +++ b/app/src/main/java/com/casic/endoscope/greendao/DaoSession.java @@ -1,6 +1,6 @@ package com.casic.endoscope.greendao; -import com.casic.endoscope.bean.CameraPointBean; +import com.casic.endoscope.bean.GasValueBean; import org.greenrobot.greendao.AbstractDao; import org.greenrobot.greendao.AbstractDaoSession; @@ -19,28 +19,28 @@ */ public class DaoSession extends AbstractDaoSession { - private final DaoConfig cameraPointBeanDaoConfig; + private final DaoConfig gasValueBeanDaoConfig; - private final CameraPointBeanDao cameraPointBeanDao; + private final GasValueBeanDao gasValueBeanDao; public DaoSession(Database db, IdentityScopeType type, Map>, DaoConfig> daoConfigMap) { super(db); - cameraPointBeanDaoConfig = daoConfigMap.get(CameraPointBeanDao.class).clone(); - cameraPointBeanDaoConfig.initIdentityScope(type); + gasValueBeanDaoConfig = daoConfigMap.get(GasValueBeanDao.class).clone(); + gasValueBeanDaoConfig.initIdentityScope(type); - cameraPointBeanDao = new CameraPointBeanDao(cameraPointBeanDaoConfig, this); + gasValueBeanDao = new GasValueBeanDao(gasValueBeanDaoConfig, this); - registerDao(CameraPointBean.class, cameraPointBeanDao); + registerDao(GasValueBean.class, gasValueBeanDao); } public void clear() { - cameraPointBeanDaoConfig.clearIdentityScope(); + gasValueBeanDaoConfig.clearIdentityScope(); } - public CameraPointBeanDao getCameraPointBeanDao() { - return cameraPointBeanDao; + public GasValueBeanDao getGasValueBeanDao() { + return gasValueBeanDao; } } diff --git a/app/src/main/java/com/casic/endoscope/greendao/GasValueBeanDao.java b/app/src/main/java/com/casic/endoscope/greendao/GasValueBeanDao.java new file mode 100644 index 0000000..5149375 --- /dev/null +++ b/app/src/main/java/com/casic/endoscope/greendao/GasValueBeanDao.java @@ -0,0 +1,149 @@ +package com.casic.endoscope.greendao; + +import android.database.Cursor; +import android.database.sqlite.SQLiteStatement; + +import com.casic.endoscope.bean.GasValueBean; + +import org.greenrobot.greendao.AbstractDao; +import org.greenrobot.greendao.Property; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.database.DatabaseStatement; +import org.greenrobot.greendao.internal.DaoConfig; + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. +/** + * DAO for table "GAS_VALUE_BEAN". +*/ +public class GasValueBeanDao extends AbstractDao { + + public static final String TABLENAME = "GAS_VALUE_BEAN"; + + /** + * Properties of entity GasValueBean.
+ * Can be used for QueryBuilder and for referencing column names. + */ + public static class Properties { + public final static Property Id = new Property(0, Long.class, "id", true, "_id"); + public final static Property Time = new Property(1, String.class, "time", false, "TIME"); + public final static Property Value = new Property(2, int.class, "value", false, "VALUE"); + public final static Property Location = new Property(3, String.class, "location", false, "LOCATION"); + } + + + public GasValueBeanDao(DaoConfig config) { + super(config); + } + + public GasValueBeanDao(DaoConfig config, DaoSession daoSession) { + super(config, daoSession); + } + + /** Creates the underlying database table. */ + public static void createTable(Database db, boolean ifNotExists) { + String constraint = ifNotExists? "IF NOT EXISTS ": ""; + db.execSQL("CREATE TABLE " + constraint + "\"GAS_VALUE_BEAN\" (" + // + "\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id + "\"TIME\" TEXT," + // 1: time + "\"VALUE\" INTEGER NOT NULL ," + // 2: value + "\"LOCATION\" TEXT);"); // 3: location + } + + /** Drops the underlying database table. */ + public static void dropTable(Database db, boolean ifExists) { + String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"GAS_VALUE_BEAN\""; + db.execSQL(sql); + } + + @Override + protected final void bindValues(DatabaseStatement stmt, GasValueBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String time = entity.getTime(); + if (time != null) { + stmt.bindString(2, time); + } + stmt.bindLong(3, entity.getValue()); + + String location = entity.getLocation(); + if (location != null) { + stmt.bindString(4, location); + } + } + + @Override + protected final void bindValues(SQLiteStatement stmt, GasValueBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String time = entity.getTime(); + if (time != null) { + stmt.bindString(2, time); + } + stmt.bindLong(3, entity.getValue()); + + String location = entity.getLocation(); + if (location != null) { + stmt.bindString(4, location); + } + } + + @Override + public Long readKey(Cursor cursor, int offset) { + return cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0); + } + + @Override + public GasValueBean readEntity(Cursor cursor, int offset) { + GasValueBean entity = new GasValueBean( // + cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id + cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // time + cursor.getInt(offset + 2), // value + cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3) // location + ); + return entity; + } + + @Override + public void readEntity(Cursor cursor, GasValueBean entity, int offset) { + entity.setId(cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0)); + entity.setTime(cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1)); + entity.setValue(cursor.getInt(offset + 2)); + entity.setLocation(cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3)); + } + + @Override + protected final Long updateKeyAfterInsert(GasValueBean entity, long rowId) { + entity.setId(rowId); + return rowId; + } + + @Override + public Long getKey(GasValueBean entity) { + if(entity != null) { + return entity.getId(); + } else { + return null; + } + } + + @Override + public boolean hasKey(GasValueBean entity) { + return entity.getId() != null; + } + + @Override + protected final boolean isEntityUpdateable() { + return true; + } + +} diff --git a/app/src/main/java/com/casic/endoscope/utils/DataBaseManager.kt b/app/src/main/java/com/casic/endoscope/utils/DataBaseManager.kt index a593a5b..c683db1 100644 --- a/app/src/main/java/com/casic/endoscope/utils/DataBaseManager.kt +++ b/app/src/main/java/com/casic/endoscope/utils/DataBaseManager.kt @@ -1,8 +1,6 @@ package com.casic.endoscope.utils import com.casic.endoscope.base.BaseApplication -import com.casic.endoscope.bean.CameraPointBean -import com.casic.endoscope.greendao.CameraPointBeanDao class DataBaseManager private constructor() { @@ -13,31 +11,5 @@ } } - private var cameraPointDao = BaseApplication.get().getDaoSession().cameraPointBeanDao - - fun cacheCameraPoint(step: Int, h: Int, v: Int) { - val bean = CameraPointBean() - bean.step = step - bean.hAngle = h - bean.vAngle = v - cameraPointDao.insert(bean) - } - - fun deleteCameraPoints(beans: MutableList) { - beans.forEach { - cameraPointDao.delete(it) - } - } - - fun deleteAllCameraPoint() { - cameraPointDao.deleteAll() - } - - fun queryCameraPointById(id: Long): CameraPointBean { - return cameraPointDao.queryBuilder() - .where(CameraPointBeanDao.Properties.Id.eq(id)) - .unique() - } - - fun loadAllCameraPoint(): MutableList = cameraPointDao.loadAll() + private var gasValueBeanDao = BaseApplication.get().getDaoSession().gasValueBeanDao } \ No newline at end of file diff --git a/app/src/main/java/com/casic/endoscope/utils/EndoscopeDevOpenHelper.kt b/app/src/main/java/com/casic/endoscope/utils/EndoscopeDevOpenHelper.kt index 507b1ff..fd87f0f 100644 --- a/app/src/main/java/com/casic/endoscope/utils/EndoscopeDevOpenHelper.kt +++ b/app/src/main/java/com/casic/endoscope/utils/EndoscopeDevOpenHelper.kt @@ -2,8 +2,8 @@ import android.content.Context import android.database.sqlite.SQLiteDatabase.CursorFactory -import com.casic.endoscope.greendao.CameraPointBeanDao import com.casic.endoscope.greendao.DaoMaster +import com.casic.endoscope.greendao.GasValueBeanDao import com.github.yuweiguocn.library.greendao.MigrationHelper import com.github.yuweiguocn.library.greendao.MigrationHelper.ReCreateAllTableListener import org.greenrobot.greendao.database.Database @@ -22,7 +22,7 @@ DaoMaster.dropAllTables(db, ifExists) } }, - CameraPointBeanDao::class.java + GasValueBeanDao::class.java ) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/endoscope/view/MainActivity.kt b/app/src/main/java/com/casic/endoscope/view/MainActivity.kt index 0fe757e..c4509b0 100644 --- a/app/src/main/java/com/casic/endoscope/view/MainActivity.kt +++ b/app/src/main/java/com/casic/endoscope/view/MainActivity.kt @@ -15,8 +15,6 @@ import android.view.SurfaceHolder import android.view.View import androidx.lifecycle.lifecycleScope -import com.casic.endoscope.adapter.CameraPointAdapter -import com.casic.endoscope.bean.CameraPointBean import com.casic.endoscope.databinding.ActivityMainBinding import com.casic.endoscope.extensions.check import com.casic.endoscope.extensions.convertValue @@ -28,14 +26,12 @@ import com.casic.endoscope.extensions.init import com.casic.endoscope.extensions.toTime import com.casic.endoscope.service.VideoTranscodeService -import com.casic.endoscope.utils.DataBaseManager import com.casic.endoscope.utils.ProjectConstant import com.casic.endoscope.utils.ble.BleDeviceManager import com.casic.endoscope.utils.ble.OnDeviceConnectListener import com.casic.endoscope.utils.ble.OnDeviceDiscoveredListener import com.casic.endoscope.utils.hk.MessageCodeHub import com.casic.endoscope.utils.hk.SDKGuider -import com.casic.endoscope.widgets.AddCameraPointDialog import com.casic.endoscope.widgets.BluetoothDeviceDialog import com.casic.endoscope.widgets.LineChartMarkerView import com.github.mikephil.charting.data.Entry @@ -55,10 +51,8 @@ import com.pengxh.kt.lite.extensions.timestampToTime import com.pengxh.kt.lite.utils.LoadingDialogHub import com.pengxh.kt.lite.utils.WeakReferenceHandler -import com.pengxh.kt.lite.widget.SteeringWheelView import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch -import kotlinx.coroutines.withContext import java.text.SimpleDateFormat import java.util.Date import java.util.Locale @@ -101,17 +95,11 @@ //焦距按钮是否已松开 private var isScaleButtonUp = true - //是否拍照成功 - private var isCaptureSuccess = true - private var timer: Timer? = null private var timerTask: TimerTask? = null private var seconds = 0L - private var dataBeans: MutableList = ArrayList() - private var selectedItems: MutableList = ArrayList() private var inputVideoPath = "" private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var dataAdapter: CameraPointAdapter private lateinit var serviceIntent: Intent private lateinit var dataSet: LineDataSet private lateinit var lineData: LineData @@ -123,8 +111,6 @@ override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) - dataBeans = DataBaseManager.get.loadAllCameraPoint() - //显示数据 weakReferenceHandler.sendEmptyMessage(messageCode) @@ -147,13 +133,7 @@ override fun handleMessage(msg: Message): Boolean { if (msg.what == messageCode) { //绑定数据 - dataAdapter = CameraPointAdapter(this, dataBeans) - binding.recyclerView.adapter = dataAdapter - dataAdapter.setOnItemCheckedListener(object : CameraPointAdapter.OnItemCheckedListener { - override fun onItemChecked(position: Int, items: ArrayList) { - selectedItems = items - } - }) + } return true } @@ -209,6 +189,180 @@ } } + binding.upScaleButton.setOnTouchListener { _, event -> + when (event.action) { + MotionEvent.ACTION_DOWN -> { + if (isPreviewSuccess && isScaleButtonUp) { + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_IN, 0) + isScaleButtonUp = false + } + } + + MotionEvent.ACTION_UP -> { + isScaleButtonUp = true + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_IN, 1) + } + } + false + } + + binding.downScaleButton.setOnTouchListener { _, event -> + when (event.action) { + MotionEvent.ACTION_DOWN -> { + if (isPreviewSuccess && isScaleButtonUp) { + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_OUT, 0) + isScaleButtonUp = false + } + } + + MotionEvent.ACTION_UP -> { + isScaleButtonUp = true + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_OUT, 1) + } + } + false + } + + binding.topButton.setOnTouchListener { _, motionEvent -> + when (motionEvent.action) { + MotionEvent.ACTION_DOWN -> { + if (isPreviewSuccess && isActionUp) { + hkSDK.NET_DVR_PTZControlWithSpeed( + previewHandle, PTZCommand.TILT_UP, 0, selectedSpeed + ) + isActionUp = false + } + } + + MotionEvent.ACTION_UP -> { + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.TILT_UP, 1) + isActionUp = true + } + } + false + } + + binding.centerButton.setOnClickListener { + if (!isPreviewSuccess) { + val deviceItem = SDKGuider.sdkGuider.devManageGuider.DeviceItem() + deviceItem.szDevName = "" + deviceItem.devNetInfo = SDKGuider.sdkGuider.devManageGuider.DevNetInfo( + ProjectConstant.HK_NET_IP, + ProjectConstant.HK_NET_PORT, + ProjectConstant.HK_NET_USERNAME, + ProjectConstant.HK_NET_PASSWORD + ) + if (deviceItem.szDevName.isEmpty()) { + deviceItem.szDevName = deviceItem.devNetInfo.szIp + } + val loginV40Jna = SDKGuider.sdkGuider.devManageGuider.login_v40_jna( + deviceItem.szDevName, deviceItem.devNetInfo + ) + if (loginV40Jna) { + //配置设备通道 + try { + val deviceInfo = SDKGuider.sdkGuider.devManageGuider.devList[0] + returnUserId = deviceInfo.szUserId + + aChannelNum = + deviceInfo.deviceInfoV40_jna.struDeviceV30.byChanNum.toInt() + startAChannel = + deviceInfo.deviceInfoV40_jna.struDeviceV30.byStartChan.toInt() + + dChannelNum = + deviceInfo.deviceInfoV40_jna.struDeviceV30.byIPChanNum + deviceInfo.deviceInfoV40_jna.struDeviceV30.byHighDChanNum * 256 + startDChannel = + deviceInfo.deviceInfoV40_jna.struDeviceV30.byStartChan.toInt() + + var iAnalogStartChan = startAChannel + var iDigitalStartChan = startDChannel + + val channelList = ArrayList() + + for (i in 0 until aChannelNum) { + channelList.add("ACamera_$iAnalogStartChan") + iAnalogStartChan++ + } + + for (i in 0 until dChannelNum) { + channelList.add("DCamera_$iDigitalStartChan") + iDigitalStartChan++ + } + selectChannel = Integer.valueOf(channelList[0].getChannel()) + + val streamList = ArrayList() + streamList.add("main_stream") + streamList.add("sub_stream") + streamList.add("third_stream") + + //开始预览 + if (previewHandle != -1) { + SDKGuider.sdkGuider.devPreviewGuider.RealPlay_Stop_jni(previewHandle) + } + val strutPlayInfo = NET_DVR_PREVIEWINFO() + strutPlayInfo.lChannel = selectChannel + strutPlayInfo.dwStreamType = 1 + strutPlayInfo.bBlocked = 1 + strutPlayInfo.hHwnd = binding.surfaceView.holder + previewHandle = SDKGuider.sdkGuider.devPreviewGuider.RealPlay_V40_jni( + returnUserId, strutPlayInfo, null + ) + if (previewHandle < 0) { + Log.d(kTag, "initEvent: Err:${MessageCodeHub.getErrorCode()}") + return@setOnClickListener + } + isPreviewSuccess = true + "预览开启成功".show(context) + //开始计时 + timer = Timer() + timerTask = object : TimerTask() { + override fun run() { + seconds++ + lifecycleScope.launch(Dispatchers.Main) { + binding.runningTimeView.text = seconds.toTime() + } + } + } + timer?.schedule(timerTask, 0, 1000) + } catch (e: IndexOutOfBoundsException) { + e.printStackTrace() + "设备未正常连接,无法开启预览".show(context) + } + } else { + "设备登陆失败".show(context) + } + } else { + if (!SDKGuider.sdkGuider.devPreviewGuider.RealPlay_Stop_jni(previewHandle)) { + return@setOnClickListener + } + previewHandle = -1 + isPreviewSuccess = false + "预览关闭成功".show(context) + //停止计时 + timerTask?.cancel() + timer?.cancel() + } + } + + binding.bottomButton.setOnTouchListener { _, motionEvent -> + when (motionEvent.action) { + MotionEvent.ACTION_DOWN -> { + if (isPreviewSuccess && isActionUp) { + hkSDK.NET_DVR_PTZControlWithSpeed( + previewHandle, PTZCommand.TILT_DOWN, 0, selectedSpeed + ) + isActionUp = false + } + } + + MotionEvent.ACTION_UP -> { + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.TILT_DOWN, 1) + isActionUp = true + } + } + false + } + //单张拍照 binding.imageButton.setOnClickListener { if (isPreviewSuccess) { @@ -252,278 +406,8 @@ true } - //连续拍照 - binding.multipleImageButton.setOnClickListener { - if (dataBeans.isEmpty()) { - "请先设置连续拍照步骤".show(this) - return@setOnClickListener - } - if (isPreviewSuccess) { - lifecycleScope.launch(Dispatchers.IO) { - dataBeans.forEach { - //再拍照 - if (isCaptureSuccess) { - isCaptureSuccess = false - - //先执行角度 - executeAngle(it.hAngle, it.vAngle) - - withContext(Dispatchers.Main) { - "抓取步骤${it.step}画面".show(context) - } - - val strJpeg = NET_DVR_JPEGPARA() - strJpeg.wPicQuality = 1 - strJpeg.wPicSize = 2 - - val imagePath = - "/${createImageFileDir()}/${timeFormat.format(Date())}.png" - hkSDK.NET_DVR_CaptureJPEGPicture( - returnUserId, selectChannel, strJpeg, imagePath - ) - - isCaptureSuccess = MessageCodeHub.getErrorCode() == 0 - } - } - withContext(Dispatchers.Main) { - "连续抓取画面完成".show(context) - } - } - } else { - "摄像头预览未打开,无法拍照".show(this) - } - } - - binding.addButton.setOnClickListener { - val step = if (dataBeans.isEmpty()) { - 0 - } else { - dataBeans.last().step - } - AddCameraPointDialog.Builder().setContext(this).setLastStep(step) - .setNegativeButton("取消").setPositiveButton("添加") - .setOnDialogButtonClickListener(object : - AddCameraPointDialog.OnDialogButtonClickListener { - override fun onConfirmClick(step: Int, hAngle: Int, vAngle: Int) { - DataBaseManager.get.cacheCameraPoint(step, hAngle, vAngle) - dataBeans = DataBaseManager.get.loadAllCameraPoint() - dataAdapter.setRefreshData(dataBeans) - } - - override fun onCancelClick() { - - } - }).build().show() - } - - binding.deleteButton.setOnClickListener { - if (selectedItems.isEmpty()) { - "请先选择要删除的步骤".show(this) - return@setOnClickListener - } - DataBaseManager.get.deleteCameraPoints(selectedItems) - dataBeans = DataBaseManager.get.loadAllCameraPoint() - dataAdapter.setRefreshData(dataBeans) - selectedItems.clear() - } - - binding.steeringWheelView.setOnWheelTouchListener(object : - SteeringWheelView.OnWheelTouchListener { - override fun onCenterClicked() { - if (!isPreviewSuccess) { - val deviceItem = SDKGuider.sdkGuider.devManageGuider.DeviceItem() - deviceItem.szDevName = "" - deviceItem.devNetInfo = SDKGuider.sdkGuider.devManageGuider.DevNetInfo( - ProjectConstant.HK_NET_IP, - ProjectConstant.HK_NET_PORT, - ProjectConstant.HK_NET_USERNAME, - ProjectConstant.HK_NET_PASSWORD - ) - if (deviceItem.szDevName.isEmpty()) { - deviceItem.szDevName = deviceItem.devNetInfo.szIp - } - val loginV40Jna = SDKGuider.sdkGuider.devManageGuider.login_v40_jna( - deviceItem.szDevName, deviceItem.devNetInfo - ) - if (loginV40Jna) { - //配置设备通道 - try { - val deviceInfo = SDKGuider.sdkGuider.devManageGuider.devList[0] - returnUserId = deviceInfo.szUserId - - aChannelNum = - deviceInfo.deviceInfoV40_jna.struDeviceV30.byChanNum.toInt() - startAChannel = - deviceInfo.deviceInfoV40_jna.struDeviceV30.byStartChan.toInt() - - dChannelNum = - deviceInfo.deviceInfoV40_jna.struDeviceV30.byIPChanNum + deviceInfo.deviceInfoV40_jna.struDeviceV30.byHighDChanNum * 256 - startDChannel = - deviceInfo.deviceInfoV40_jna.struDeviceV30.byStartChan.toInt() - - var iAnalogStartChan = startAChannel - var iDigitalStartChan = startDChannel - - val channelList = ArrayList() - - for (i in 0 until aChannelNum) { - channelList.add("ACamera_$iAnalogStartChan") - iAnalogStartChan++ - } - - for (i in 0 until dChannelNum) { - channelList.add("DCamera_$iDigitalStartChan") - iDigitalStartChan++ - } - selectChannel = Integer.valueOf(channelList[0].getChannel()) - - val streamList = ArrayList() - streamList.add("main_stream") - streamList.add("sub_stream") - streamList.add("third_stream") - - //开始预览 - if (previewHandle != -1) { - SDKGuider.sdkGuider.devPreviewGuider.RealPlay_Stop_jni(previewHandle) - } - val strutPlayInfo = NET_DVR_PREVIEWINFO() - strutPlayInfo.lChannel = selectChannel - strutPlayInfo.dwStreamType = 1 - strutPlayInfo.bBlocked = 1 - strutPlayInfo.hHwnd = binding.surfaceView.holder - previewHandle = SDKGuider.sdkGuider.devPreviewGuider.RealPlay_V40_jni( - returnUserId, strutPlayInfo, null - ) - if (previewHandle < 0) { - Log.d(kTag, "initEvent: Err:${MessageCodeHub.getErrorCode()}") - return - } - isPreviewSuccess = true - "预览开启成功".show(context) - //开始计时 - timer = Timer() - timerTask = object : TimerTask() { - override fun run() { - seconds++ - lifecycleScope.launch(Dispatchers.Main) { - binding.runningTimeView.text = seconds.toTime() - } - } - } - timer?.schedule(timerTask, 0, 1000) - } catch (e: IndexOutOfBoundsException) { - e.printStackTrace() - "设备未正常连接,无法开启预览".show(context) - } - } else { - "设备登陆失败".show(context) - } - } else { - if (!SDKGuider.sdkGuider.devPreviewGuider.RealPlay_Stop_jni(previewHandle)) { - return - } - previewHandle = -1 - isPreviewSuccess = false - "预览关闭成功".show(context) - //停止计时 - timerTask?.cancel() - timer?.cancel() - } - } - - override fun onLeftTurn() { - if (isPreviewSuccess && isActionUp) { - hkSDK.NET_DVR_PTZControlWithSpeed( - previewHandle, PTZCommand.PAN_LEFT, 0, selectedSpeed - ) - isActionUp = false - } - } - - override fun onTopTurn() { - if (isPreviewSuccess && isActionUp) { - hkSDK.NET_DVR_PTZControlWithSpeed( - previewHandle, PTZCommand.TILT_UP, 0, selectedSpeed - ) - isActionUp = false - } - } - - override fun onRightTurn() { - if (isPreviewSuccess && isActionUp) { - hkSDK.NET_DVR_PTZControlWithSpeed( - previewHandle, PTZCommand.PAN_RIGHT, 0, selectedSpeed - ) - isActionUp = false - } - } - - override fun onBottomTurn() { - if (isPreviewSuccess && isActionUp) { - hkSDK.NET_DVR_PTZControlWithSpeed( - previewHandle, PTZCommand.TILT_DOWN, 0, selectedSpeed - ) - isActionUp = false - } - } - - override fun onActionTurnUp(dir: SteeringWheelView.Direction) { - when (dir) { - SteeringWheelView.Direction.LEFT -> { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.PAN_LEFT, 1) - isActionUp = true - } - - SteeringWheelView.Direction.TOP -> { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.TILT_UP, 1) - isActionUp = true - } - - SteeringWheelView.Direction.RIGHT -> { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.PAN_RIGHT, 1) - isActionUp = true - } - - SteeringWheelView.Direction.BOTTOM -> { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.TILT_DOWN, 1) - isActionUp = true - } - } - } - }) - - binding.upScaleButton.setOnTouchListener { _, event -> - when (event.action) { - MotionEvent.ACTION_DOWN -> { - if (isPreviewSuccess && isScaleButtonUp) { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_IN, 0) - isScaleButtonUp = false - } - } - - MotionEvent.ACTION_UP -> { - isScaleButtonUp = true - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_IN, 1) - } - } - false - } - - binding.downScaleButton.setOnTouchListener { _, event -> - when (event.action) { - MotionEvent.ACTION_DOWN -> { - if (isPreviewSuccess && isScaleButtonUp) { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_OUT, 0) - isScaleButtonUp = false - } - } - - MotionEvent.ACTION_UP -> { - isScaleButtonUp = true - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_OUT, 1) - } - } - false + binding.resetButton.setOnClickListener { + executeAngle(0, 0) } } diff --git a/app/src/main/res/drawable/bg_solid_layout_blue_10.xml b/app/src/main/res/drawable/bg_solid_layout_blue_10.xml new file mode 100644 index 0000000..b7e06e3 --- /dev/null +++ b/app/src/main/res/drawable/bg_solid_layout_blue_10.xml @@ -0,0 +1,7 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_stroke_layout_blue_10.xml b/app/src/main/res/drawable/bg_stroke_layout_blue_10.xml deleted file mode 100644 index d6f55c9..0000000 --- a/app/src/main/res/drawable/bg_stroke_layout_blue_10.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_camera.xml b/app/src/main/res/drawable/ic_camera.xml new file mode 100644 index 0000000..1f7ab22 --- /dev/null +++ b/app/src/main/res/drawable/ic_camera.xml @@ -0,0 +1,15 @@ + + + + + diff --git a/app/src/main/res/drawable/ic_dir_down.xml b/app/src/main/res/drawable/ic_dir_down.xml deleted file mode 100644 index e6807dc..0000000 --- a/app/src/main/res/drawable/ic_dir_down.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_dir_left.xml b/app/src/main/res/drawable/ic_dir_left.xml deleted file mode 100644 index 12b2237..0000000 --- a/app/src/main/res/drawable/ic_dir_left.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_dir_right.xml b/app/src/main/res/drawable/ic_dir_right.xml deleted file mode 100644 index 96539aa..0000000 --- a/app/src/main/res/drawable/ic_dir_right.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/build.gradle b/app/build.gradle index c2a2c53..64d4d0c 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -72,7 +72,7 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5.4' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.8' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.cardview:cardview:1.0.0' diff --git a/app/src/main/java/com/casic/endoscope/adapter/CameraPointAdapter.kt b/app/src/main/java/com/casic/endoscope/adapter/CameraPointAdapter.kt deleted file mode 100644 index fe404b2..0000000 --- a/app/src/main/java/com/casic/endoscope/adapter/CameraPointAdapter.kt +++ /dev/null @@ -1,78 +0,0 @@ -package com.casic.endoscope.adapter - -import android.annotation.SuppressLint -import android.content.Context -import android.graphics.Color -import android.view.LayoutInflater -import android.view.ViewGroup -import android.widget.LinearLayout -import androidx.recyclerview.widget.RecyclerView -import com.casic.endoscope.R -import com.casic.endoscope.bean.CameraPointBean -import com.pengxh.kt.lite.adapter.ViewHolder -import com.pengxh.kt.lite.extensions.convertColor - -class CameraPointAdapter( - private val context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var multipleSelected = mutableSetOf() - private var selectedItems = ArrayList() - - override fun getItemCount(): Int = dataRows.size - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { - return ViewHolder( - LayoutInflater.from(context).inflate(R.layout.item_point_list_rv, parent, false) - ) - } - - @SuppressLint("NotifyDataSetChanged") - fun setRefreshData(dataRows: MutableList) { - this.dataRows.clear() - this.dataRows.addAll(dataRows) - notifyDataSetChanged() - multipleSelected.clear() - selectedItems.clear() - } - - override fun onBindViewHolder(holder: ViewHolder, position: Int) { - val item = dataRows[position] - holder.setText(R.id.stepNameView, "步骤 ${item.step}") - .setText(R.id.hAngleView, "水平角度 ${item.hAngle}°") - .setText(R.id.vAngleView, "垂直角度 ${item.vAngle}°") - - val linearLayout = holder.itemView.findViewById(R.id.rootView) - //item背景色 - if (position % 2 == 0) { - linearLayout.setBackgroundColor(Color.parseColor("#C8E3F4")) - } else { - linearLayout.setBackgroundColor(R.color.backgroundColor.convertColor(context)) - } - - holder.itemView.isSelected = multipleSelected.contains(position) - holder.itemView.setOnClickListener { - if (multipleSelected.contains(position)) { - multipleSelected.remove(position) - selectedItems.remove(dataRows[position]) - holder.itemView.isSelected = false - } else { - multipleSelected.add(position) - selectedItems.add(dataRows[position]) - holder.itemView.isSelected = true - } - - itemCheckedListener?.onItemChecked(position, selectedItems) - } - } - - private var itemCheckedListener: OnItemCheckedListener? = null - - interface OnItemCheckedListener { - fun onItemChecked(position: Int, items: ArrayList) - } - - fun setOnItemCheckedListener(listener: OnItemCheckedListener) { - itemCheckedListener = listener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/endoscope/bean/CameraPointBean.java b/app/src/main/java/com/casic/endoscope/bean/CameraPointBean.java deleted file mode 100644 index 3a20d82..0000000 --- a/app/src/main/java/com/casic/endoscope/bean/CameraPointBean.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.casic.endoscope.bean; - -import org.greenrobot.greendao.annotation.Entity; -import org.greenrobot.greendao.annotation.Generated; -import org.greenrobot.greendao.annotation.Id; - -/** - * 必须是java,不能是kt - */ -@Entity -public class CameraPointBean { - - @Id(autoincrement = true) - private Long id;//主键自增 - - private int step;//步骤序号 - private int hAngle;//水平角度 - private int vAngle;//垂直角度 - - @Generated(hash = 1436018650) - public CameraPointBean(Long id, int step, int hAngle, int vAngle) { - this.id = id; - this.step = step; - this.hAngle = hAngle; - this.vAngle = vAngle; - } - - @Generated(hash = 44086073) - public CameraPointBean() { - } - - public Long getId() { - return this.id; - } - - public void setId(Long id) { - this.id = id; - } - - public int getStep() { - return this.step; - } - - public void setStep(int step) { - this.step = step; - } - - public int getHAngle() { - return this.hAngle; - } - - public void setHAngle(int hAngle) { - this.hAngle = hAngle; - } - - public int getVAngle() { - return this.vAngle; - } - - public void setVAngle(int vAngle) { - this.vAngle = vAngle; - } -} diff --git a/app/src/main/java/com/casic/endoscope/bean/GasValueBean.java b/app/src/main/java/com/casic/endoscope/bean/GasValueBean.java new file mode 100644 index 0000000..6537b9a --- /dev/null +++ b/app/src/main/java/com/casic/endoscope/bean/GasValueBean.java @@ -0,0 +1,63 @@ +package com.casic.endoscope.bean; + +import org.greenrobot.greendao.annotation.Entity; +import org.greenrobot.greendao.annotation.Generated; +import org.greenrobot.greendao.annotation.Id; + +/** + * 必须是java,不能是kt + * 甲烷浓度表结构 + */ +@Entity +public class GasValueBean { + @Id(autoincrement = true) + private Long id;//主键自增 + + private String time;//采集浓度的时间 + private int value;//采集的浓度 + private String location;//浓度采集点位置 + + @Generated(hash = 663679791) + public GasValueBean(Long id, String time, int value, String location) { + this.id = id; + this.time = time; + this.value = value; + this.location = location; + } + + @Generated(hash = 291409217) + public GasValueBean() { + } + + public Long getId() { + return this.id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getTime() { + return this.time; + } + + public void setTime(String time) { + this.time = time; + } + + public int getValue() { + return this.value; + } + + public void setValue(int value) { + this.value = value; + } + + public String getLocation() { + return this.location; + } + + public void setLocation(String location) { + this.location = location; + } +} diff --git a/app/src/main/java/com/casic/endoscope/greendao/CameraPointBeanDao.java b/app/src/main/java/com/casic/endoscope/greendao/CameraPointBeanDao.java deleted file mode 100644 index 11bc932..0000000 --- a/app/src/main/java/com/casic/endoscope/greendao/CameraPointBeanDao.java +++ /dev/null @@ -1,138 +0,0 @@ -package com.casic.endoscope.greendao; - -import android.database.Cursor; -import android.database.sqlite.SQLiteStatement; - -import com.casic.endoscope.bean.CameraPointBean; - -import org.greenrobot.greendao.AbstractDao; -import org.greenrobot.greendao.Property; -import org.greenrobot.greendao.database.Database; -import org.greenrobot.greendao.database.DatabaseStatement; -import org.greenrobot.greendao.internal.DaoConfig; - -// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. - -/** - * DAO for table "CAMERA_POINT_BEAN". - */ -public class CameraPointBeanDao extends AbstractDao { - - public static final String TABLENAME = "CAMERA_POINT_BEAN"; - - /** - * Properties of entity CameraPointBean.
- * Can be used for QueryBuilder and for referencing column names. - */ - public static class Properties { - public final static Property Id = new Property(0, Long.class, "id", true, "_id"); - public final static Property Step = new Property(1, int.class, "step", false, "STEP"); - public final static Property HAngle = new Property(2, int.class, "hAngle", false, "H_ANGLE"); - public final static Property VAngle = new Property(3, int.class, "vAngle", false, "V_ANGLE"); - } - - - public CameraPointBeanDao(DaoConfig config) { - super(config); - } - - public CameraPointBeanDao(DaoConfig config, DaoSession daoSession) { - super(config, daoSession); - } - - /** - * Creates the underlying database table. - */ - public static void createTable(Database db, boolean ifNotExists) { - String constraint = ifNotExists ? "IF NOT EXISTS " : ""; - db.execSQL("CREATE TABLE " + constraint + "\"CAMERA_POINT_BEAN\" (" + // - "\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id - "\"STEP\" INTEGER NOT NULL ," + // 1: step - "\"H_ANGLE\" INTEGER NOT NULL ," + // 2: hAngle - "\"V_ANGLE\" INTEGER NOT NULL );"); // 3: vAngle - } - - /** - * Drops the underlying database table. - */ - public static void dropTable(Database db, boolean ifExists) { - String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"CAMERA_POINT_BEAN\""; - db.execSQL(sql); - } - - @Override - protected final void bindValues(DatabaseStatement stmt, CameraPointBean entity) { - stmt.clearBindings(); - - Long id = entity.getId(); - if (id != null) { - stmt.bindLong(1, id); - } - stmt.bindLong(2, entity.getStep()); - stmt.bindLong(3, entity.getHAngle()); - stmt.bindLong(4, entity.getVAngle()); - } - - @Override - protected final void bindValues(SQLiteStatement stmt, CameraPointBean entity) { - stmt.clearBindings(); - - Long id = entity.getId(); - if (id != null) { - stmt.bindLong(1, id); - } - stmt.bindLong(2, entity.getStep()); - stmt.bindLong(3, entity.getHAngle()); - stmt.bindLong(4, entity.getVAngle()); - } - - @Override - public Long readKey(Cursor cursor, int offset) { - return cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0); - } - - @Override - public CameraPointBean readEntity(Cursor cursor, int offset) { - CameraPointBean entity = new CameraPointBean( // - cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id - cursor.getInt(offset + 1), // step - cursor.getInt(offset + 2), // hAngle - cursor.getInt(offset + 3) // vAngle - ); - return entity; - } - - @Override - public void readEntity(Cursor cursor, CameraPointBean entity, int offset) { - entity.setId(cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0)); - entity.setStep(cursor.getInt(offset + 1)); - entity.setHAngle(cursor.getInt(offset + 2)); - entity.setVAngle(cursor.getInt(offset + 3)); - } - - @Override - protected final Long updateKeyAfterInsert(CameraPointBean entity, long rowId) { - entity.setId(rowId); - return rowId; - } - - @Override - public Long getKey(CameraPointBean entity) { - if (entity != null) { - return entity.getId(); - } else { - return null; - } - } - - @Override - public boolean hasKey(CameraPointBean entity) { - return entity.getId() != null; - } - - @Override - protected final boolean isEntityUpdateable() { - return true; - } - -} diff --git a/app/src/main/java/com/casic/endoscope/greendao/DaoMaster.java b/app/src/main/java/com/casic/endoscope/greendao/DaoMaster.java index 5d4fa30..a455fd0 100644 --- a/app/src/main/java/com/casic/endoscope/greendao/DaoMaster.java +++ b/app/src/main/java/com/casic/endoscope/greendao/DaoMaster.java @@ -13,25 +13,20 @@ // THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. - /** * Master of DAO (schema version 1): knows all DAOs. */ public class DaoMaster extends AbstractDaoMaster { public static final int SCHEMA_VERSION = 1; - /** - * Creates underlying database table using DAOs. - */ + /** Creates underlying database table using DAOs. */ public static void createAllTables(Database db, boolean ifNotExists) { - CameraPointBeanDao.createTable(db, ifNotExists); + GasValueBeanDao.createTable(db, ifNotExists); } - /** - * Drops underlying database table using DAOs. - */ + /** Drops underlying database table using DAOs. */ public static void dropAllTables(Database db, boolean ifExists) { - CameraPointBeanDao.dropTable(db, ifExists); + GasValueBeanDao.dropTable(db, ifExists); } /** @@ -50,7 +45,7 @@ public DaoMaster(Database db) { super(db, SCHEMA_VERSION); - registerDaoClass(CameraPointBeanDao.class); + registerDaoClass(GasValueBeanDao.class); } public DaoSession newSession() { @@ -80,9 +75,7 @@ } } - /** - * WARNING: Drops all table on Upgrade! Use only during development. - */ + /** WARNING: Drops all table on Upgrade! Use only during development. */ public static class DevOpenHelper extends OpenHelper { public DevOpenHelper(Context context, String name) { super(context, name); diff --git a/app/src/main/java/com/casic/endoscope/greendao/DaoSession.java b/app/src/main/java/com/casic/endoscope/greendao/DaoSession.java index ed2f9c0..259243d 100644 --- a/app/src/main/java/com/casic/endoscope/greendao/DaoSession.java +++ b/app/src/main/java/com/casic/endoscope/greendao/DaoSession.java @@ -1,6 +1,6 @@ package com.casic.endoscope.greendao; -import com.casic.endoscope.bean.CameraPointBean; +import com.casic.endoscope.bean.GasValueBean; import org.greenrobot.greendao.AbstractDao; import org.greenrobot.greendao.AbstractDaoSession; @@ -19,28 +19,28 @@ */ public class DaoSession extends AbstractDaoSession { - private final DaoConfig cameraPointBeanDaoConfig; + private final DaoConfig gasValueBeanDaoConfig; - private final CameraPointBeanDao cameraPointBeanDao; + private final GasValueBeanDao gasValueBeanDao; public DaoSession(Database db, IdentityScopeType type, Map>, DaoConfig> daoConfigMap) { super(db); - cameraPointBeanDaoConfig = daoConfigMap.get(CameraPointBeanDao.class).clone(); - cameraPointBeanDaoConfig.initIdentityScope(type); + gasValueBeanDaoConfig = daoConfigMap.get(GasValueBeanDao.class).clone(); + gasValueBeanDaoConfig.initIdentityScope(type); - cameraPointBeanDao = new CameraPointBeanDao(cameraPointBeanDaoConfig, this); + gasValueBeanDao = new GasValueBeanDao(gasValueBeanDaoConfig, this); - registerDao(CameraPointBean.class, cameraPointBeanDao); + registerDao(GasValueBean.class, gasValueBeanDao); } public void clear() { - cameraPointBeanDaoConfig.clearIdentityScope(); + gasValueBeanDaoConfig.clearIdentityScope(); } - public CameraPointBeanDao getCameraPointBeanDao() { - return cameraPointBeanDao; + public GasValueBeanDao getGasValueBeanDao() { + return gasValueBeanDao; } } diff --git a/app/src/main/java/com/casic/endoscope/greendao/GasValueBeanDao.java b/app/src/main/java/com/casic/endoscope/greendao/GasValueBeanDao.java new file mode 100644 index 0000000..5149375 --- /dev/null +++ b/app/src/main/java/com/casic/endoscope/greendao/GasValueBeanDao.java @@ -0,0 +1,149 @@ +package com.casic.endoscope.greendao; + +import android.database.Cursor; +import android.database.sqlite.SQLiteStatement; + +import com.casic.endoscope.bean.GasValueBean; + +import org.greenrobot.greendao.AbstractDao; +import org.greenrobot.greendao.Property; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.database.DatabaseStatement; +import org.greenrobot.greendao.internal.DaoConfig; + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. +/** + * DAO for table "GAS_VALUE_BEAN". +*/ +public class GasValueBeanDao extends AbstractDao { + + public static final String TABLENAME = "GAS_VALUE_BEAN"; + + /** + * Properties of entity GasValueBean.
+ * Can be used for QueryBuilder and for referencing column names. + */ + public static class Properties { + public final static Property Id = new Property(0, Long.class, "id", true, "_id"); + public final static Property Time = new Property(1, String.class, "time", false, "TIME"); + public final static Property Value = new Property(2, int.class, "value", false, "VALUE"); + public final static Property Location = new Property(3, String.class, "location", false, "LOCATION"); + } + + + public GasValueBeanDao(DaoConfig config) { + super(config); + } + + public GasValueBeanDao(DaoConfig config, DaoSession daoSession) { + super(config, daoSession); + } + + /** Creates the underlying database table. */ + public static void createTable(Database db, boolean ifNotExists) { + String constraint = ifNotExists? "IF NOT EXISTS ": ""; + db.execSQL("CREATE TABLE " + constraint + "\"GAS_VALUE_BEAN\" (" + // + "\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id + "\"TIME\" TEXT," + // 1: time + "\"VALUE\" INTEGER NOT NULL ," + // 2: value + "\"LOCATION\" TEXT);"); // 3: location + } + + /** Drops the underlying database table. */ + public static void dropTable(Database db, boolean ifExists) { + String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"GAS_VALUE_BEAN\""; + db.execSQL(sql); + } + + @Override + protected final void bindValues(DatabaseStatement stmt, GasValueBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String time = entity.getTime(); + if (time != null) { + stmt.bindString(2, time); + } + stmt.bindLong(3, entity.getValue()); + + String location = entity.getLocation(); + if (location != null) { + stmt.bindString(4, location); + } + } + + @Override + protected final void bindValues(SQLiteStatement stmt, GasValueBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String time = entity.getTime(); + if (time != null) { + stmt.bindString(2, time); + } + stmt.bindLong(3, entity.getValue()); + + String location = entity.getLocation(); + if (location != null) { + stmt.bindString(4, location); + } + } + + @Override + public Long readKey(Cursor cursor, int offset) { + return cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0); + } + + @Override + public GasValueBean readEntity(Cursor cursor, int offset) { + GasValueBean entity = new GasValueBean( // + cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id + cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // time + cursor.getInt(offset + 2), // value + cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3) // location + ); + return entity; + } + + @Override + public void readEntity(Cursor cursor, GasValueBean entity, int offset) { + entity.setId(cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0)); + entity.setTime(cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1)); + entity.setValue(cursor.getInt(offset + 2)); + entity.setLocation(cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3)); + } + + @Override + protected final Long updateKeyAfterInsert(GasValueBean entity, long rowId) { + entity.setId(rowId); + return rowId; + } + + @Override + public Long getKey(GasValueBean entity) { + if(entity != null) { + return entity.getId(); + } else { + return null; + } + } + + @Override + public boolean hasKey(GasValueBean entity) { + return entity.getId() != null; + } + + @Override + protected final boolean isEntityUpdateable() { + return true; + } + +} diff --git a/app/src/main/java/com/casic/endoscope/utils/DataBaseManager.kt b/app/src/main/java/com/casic/endoscope/utils/DataBaseManager.kt index a593a5b..c683db1 100644 --- a/app/src/main/java/com/casic/endoscope/utils/DataBaseManager.kt +++ b/app/src/main/java/com/casic/endoscope/utils/DataBaseManager.kt @@ -1,8 +1,6 @@ package com.casic.endoscope.utils import com.casic.endoscope.base.BaseApplication -import com.casic.endoscope.bean.CameraPointBean -import com.casic.endoscope.greendao.CameraPointBeanDao class DataBaseManager private constructor() { @@ -13,31 +11,5 @@ } } - private var cameraPointDao = BaseApplication.get().getDaoSession().cameraPointBeanDao - - fun cacheCameraPoint(step: Int, h: Int, v: Int) { - val bean = CameraPointBean() - bean.step = step - bean.hAngle = h - bean.vAngle = v - cameraPointDao.insert(bean) - } - - fun deleteCameraPoints(beans: MutableList) { - beans.forEach { - cameraPointDao.delete(it) - } - } - - fun deleteAllCameraPoint() { - cameraPointDao.deleteAll() - } - - fun queryCameraPointById(id: Long): CameraPointBean { - return cameraPointDao.queryBuilder() - .where(CameraPointBeanDao.Properties.Id.eq(id)) - .unique() - } - - fun loadAllCameraPoint(): MutableList = cameraPointDao.loadAll() + private var gasValueBeanDao = BaseApplication.get().getDaoSession().gasValueBeanDao } \ No newline at end of file diff --git a/app/src/main/java/com/casic/endoscope/utils/EndoscopeDevOpenHelper.kt b/app/src/main/java/com/casic/endoscope/utils/EndoscopeDevOpenHelper.kt index 507b1ff..fd87f0f 100644 --- a/app/src/main/java/com/casic/endoscope/utils/EndoscopeDevOpenHelper.kt +++ b/app/src/main/java/com/casic/endoscope/utils/EndoscopeDevOpenHelper.kt @@ -2,8 +2,8 @@ import android.content.Context import android.database.sqlite.SQLiteDatabase.CursorFactory -import com.casic.endoscope.greendao.CameraPointBeanDao import com.casic.endoscope.greendao.DaoMaster +import com.casic.endoscope.greendao.GasValueBeanDao import com.github.yuweiguocn.library.greendao.MigrationHelper import com.github.yuweiguocn.library.greendao.MigrationHelper.ReCreateAllTableListener import org.greenrobot.greendao.database.Database @@ -22,7 +22,7 @@ DaoMaster.dropAllTables(db, ifExists) } }, - CameraPointBeanDao::class.java + GasValueBeanDao::class.java ) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/endoscope/view/MainActivity.kt b/app/src/main/java/com/casic/endoscope/view/MainActivity.kt index 0fe757e..c4509b0 100644 --- a/app/src/main/java/com/casic/endoscope/view/MainActivity.kt +++ b/app/src/main/java/com/casic/endoscope/view/MainActivity.kt @@ -15,8 +15,6 @@ import android.view.SurfaceHolder import android.view.View import androidx.lifecycle.lifecycleScope -import com.casic.endoscope.adapter.CameraPointAdapter -import com.casic.endoscope.bean.CameraPointBean import com.casic.endoscope.databinding.ActivityMainBinding import com.casic.endoscope.extensions.check import com.casic.endoscope.extensions.convertValue @@ -28,14 +26,12 @@ import com.casic.endoscope.extensions.init import com.casic.endoscope.extensions.toTime import com.casic.endoscope.service.VideoTranscodeService -import com.casic.endoscope.utils.DataBaseManager import com.casic.endoscope.utils.ProjectConstant import com.casic.endoscope.utils.ble.BleDeviceManager import com.casic.endoscope.utils.ble.OnDeviceConnectListener import com.casic.endoscope.utils.ble.OnDeviceDiscoveredListener import com.casic.endoscope.utils.hk.MessageCodeHub import com.casic.endoscope.utils.hk.SDKGuider -import com.casic.endoscope.widgets.AddCameraPointDialog import com.casic.endoscope.widgets.BluetoothDeviceDialog import com.casic.endoscope.widgets.LineChartMarkerView import com.github.mikephil.charting.data.Entry @@ -55,10 +51,8 @@ import com.pengxh.kt.lite.extensions.timestampToTime import com.pengxh.kt.lite.utils.LoadingDialogHub import com.pengxh.kt.lite.utils.WeakReferenceHandler -import com.pengxh.kt.lite.widget.SteeringWheelView import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch -import kotlinx.coroutines.withContext import java.text.SimpleDateFormat import java.util.Date import java.util.Locale @@ -101,17 +95,11 @@ //焦距按钮是否已松开 private var isScaleButtonUp = true - //是否拍照成功 - private var isCaptureSuccess = true - private var timer: Timer? = null private var timerTask: TimerTask? = null private var seconds = 0L - private var dataBeans: MutableList = ArrayList() - private var selectedItems: MutableList = ArrayList() private var inputVideoPath = "" private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var dataAdapter: CameraPointAdapter private lateinit var serviceIntent: Intent private lateinit var dataSet: LineDataSet private lateinit var lineData: LineData @@ -123,8 +111,6 @@ override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) - dataBeans = DataBaseManager.get.loadAllCameraPoint() - //显示数据 weakReferenceHandler.sendEmptyMessage(messageCode) @@ -147,13 +133,7 @@ override fun handleMessage(msg: Message): Boolean { if (msg.what == messageCode) { //绑定数据 - dataAdapter = CameraPointAdapter(this, dataBeans) - binding.recyclerView.adapter = dataAdapter - dataAdapter.setOnItemCheckedListener(object : CameraPointAdapter.OnItemCheckedListener { - override fun onItemChecked(position: Int, items: ArrayList) { - selectedItems = items - } - }) + } return true } @@ -209,6 +189,180 @@ } } + binding.upScaleButton.setOnTouchListener { _, event -> + when (event.action) { + MotionEvent.ACTION_DOWN -> { + if (isPreviewSuccess && isScaleButtonUp) { + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_IN, 0) + isScaleButtonUp = false + } + } + + MotionEvent.ACTION_UP -> { + isScaleButtonUp = true + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_IN, 1) + } + } + false + } + + binding.downScaleButton.setOnTouchListener { _, event -> + when (event.action) { + MotionEvent.ACTION_DOWN -> { + if (isPreviewSuccess && isScaleButtonUp) { + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_OUT, 0) + isScaleButtonUp = false + } + } + + MotionEvent.ACTION_UP -> { + isScaleButtonUp = true + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_OUT, 1) + } + } + false + } + + binding.topButton.setOnTouchListener { _, motionEvent -> + when (motionEvent.action) { + MotionEvent.ACTION_DOWN -> { + if (isPreviewSuccess && isActionUp) { + hkSDK.NET_DVR_PTZControlWithSpeed( + previewHandle, PTZCommand.TILT_UP, 0, selectedSpeed + ) + isActionUp = false + } + } + + MotionEvent.ACTION_UP -> { + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.TILT_UP, 1) + isActionUp = true + } + } + false + } + + binding.centerButton.setOnClickListener { + if (!isPreviewSuccess) { + val deviceItem = SDKGuider.sdkGuider.devManageGuider.DeviceItem() + deviceItem.szDevName = "" + deviceItem.devNetInfo = SDKGuider.sdkGuider.devManageGuider.DevNetInfo( + ProjectConstant.HK_NET_IP, + ProjectConstant.HK_NET_PORT, + ProjectConstant.HK_NET_USERNAME, + ProjectConstant.HK_NET_PASSWORD + ) + if (deviceItem.szDevName.isEmpty()) { + deviceItem.szDevName = deviceItem.devNetInfo.szIp + } + val loginV40Jna = SDKGuider.sdkGuider.devManageGuider.login_v40_jna( + deviceItem.szDevName, deviceItem.devNetInfo + ) + if (loginV40Jna) { + //配置设备通道 + try { + val deviceInfo = SDKGuider.sdkGuider.devManageGuider.devList[0] + returnUserId = deviceInfo.szUserId + + aChannelNum = + deviceInfo.deviceInfoV40_jna.struDeviceV30.byChanNum.toInt() + startAChannel = + deviceInfo.deviceInfoV40_jna.struDeviceV30.byStartChan.toInt() + + dChannelNum = + deviceInfo.deviceInfoV40_jna.struDeviceV30.byIPChanNum + deviceInfo.deviceInfoV40_jna.struDeviceV30.byHighDChanNum * 256 + startDChannel = + deviceInfo.deviceInfoV40_jna.struDeviceV30.byStartChan.toInt() + + var iAnalogStartChan = startAChannel + var iDigitalStartChan = startDChannel + + val channelList = ArrayList() + + for (i in 0 until aChannelNum) { + channelList.add("ACamera_$iAnalogStartChan") + iAnalogStartChan++ + } + + for (i in 0 until dChannelNum) { + channelList.add("DCamera_$iDigitalStartChan") + iDigitalStartChan++ + } + selectChannel = Integer.valueOf(channelList[0].getChannel()) + + val streamList = ArrayList() + streamList.add("main_stream") + streamList.add("sub_stream") + streamList.add("third_stream") + + //开始预览 + if (previewHandle != -1) { + SDKGuider.sdkGuider.devPreviewGuider.RealPlay_Stop_jni(previewHandle) + } + val strutPlayInfo = NET_DVR_PREVIEWINFO() + strutPlayInfo.lChannel = selectChannel + strutPlayInfo.dwStreamType = 1 + strutPlayInfo.bBlocked = 1 + strutPlayInfo.hHwnd = binding.surfaceView.holder + previewHandle = SDKGuider.sdkGuider.devPreviewGuider.RealPlay_V40_jni( + returnUserId, strutPlayInfo, null + ) + if (previewHandle < 0) { + Log.d(kTag, "initEvent: Err:${MessageCodeHub.getErrorCode()}") + return@setOnClickListener + } + isPreviewSuccess = true + "预览开启成功".show(context) + //开始计时 + timer = Timer() + timerTask = object : TimerTask() { + override fun run() { + seconds++ + lifecycleScope.launch(Dispatchers.Main) { + binding.runningTimeView.text = seconds.toTime() + } + } + } + timer?.schedule(timerTask, 0, 1000) + } catch (e: IndexOutOfBoundsException) { + e.printStackTrace() + "设备未正常连接,无法开启预览".show(context) + } + } else { + "设备登陆失败".show(context) + } + } else { + if (!SDKGuider.sdkGuider.devPreviewGuider.RealPlay_Stop_jni(previewHandle)) { + return@setOnClickListener + } + previewHandle = -1 + isPreviewSuccess = false + "预览关闭成功".show(context) + //停止计时 + timerTask?.cancel() + timer?.cancel() + } + } + + binding.bottomButton.setOnTouchListener { _, motionEvent -> + when (motionEvent.action) { + MotionEvent.ACTION_DOWN -> { + if (isPreviewSuccess && isActionUp) { + hkSDK.NET_DVR_PTZControlWithSpeed( + previewHandle, PTZCommand.TILT_DOWN, 0, selectedSpeed + ) + isActionUp = false + } + } + + MotionEvent.ACTION_UP -> { + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.TILT_DOWN, 1) + isActionUp = true + } + } + false + } + //单张拍照 binding.imageButton.setOnClickListener { if (isPreviewSuccess) { @@ -252,278 +406,8 @@ true } - //连续拍照 - binding.multipleImageButton.setOnClickListener { - if (dataBeans.isEmpty()) { - "请先设置连续拍照步骤".show(this) - return@setOnClickListener - } - if (isPreviewSuccess) { - lifecycleScope.launch(Dispatchers.IO) { - dataBeans.forEach { - //再拍照 - if (isCaptureSuccess) { - isCaptureSuccess = false - - //先执行角度 - executeAngle(it.hAngle, it.vAngle) - - withContext(Dispatchers.Main) { - "抓取步骤${it.step}画面".show(context) - } - - val strJpeg = NET_DVR_JPEGPARA() - strJpeg.wPicQuality = 1 - strJpeg.wPicSize = 2 - - val imagePath = - "/${createImageFileDir()}/${timeFormat.format(Date())}.png" - hkSDK.NET_DVR_CaptureJPEGPicture( - returnUserId, selectChannel, strJpeg, imagePath - ) - - isCaptureSuccess = MessageCodeHub.getErrorCode() == 0 - } - } - withContext(Dispatchers.Main) { - "连续抓取画面完成".show(context) - } - } - } else { - "摄像头预览未打开,无法拍照".show(this) - } - } - - binding.addButton.setOnClickListener { - val step = if (dataBeans.isEmpty()) { - 0 - } else { - dataBeans.last().step - } - AddCameraPointDialog.Builder().setContext(this).setLastStep(step) - .setNegativeButton("取消").setPositiveButton("添加") - .setOnDialogButtonClickListener(object : - AddCameraPointDialog.OnDialogButtonClickListener { - override fun onConfirmClick(step: Int, hAngle: Int, vAngle: Int) { - DataBaseManager.get.cacheCameraPoint(step, hAngle, vAngle) - dataBeans = DataBaseManager.get.loadAllCameraPoint() - dataAdapter.setRefreshData(dataBeans) - } - - override fun onCancelClick() { - - } - }).build().show() - } - - binding.deleteButton.setOnClickListener { - if (selectedItems.isEmpty()) { - "请先选择要删除的步骤".show(this) - return@setOnClickListener - } - DataBaseManager.get.deleteCameraPoints(selectedItems) - dataBeans = DataBaseManager.get.loadAllCameraPoint() - dataAdapter.setRefreshData(dataBeans) - selectedItems.clear() - } - - binding.steeringWheelView.setOnWheelTouchListener(object : - SteeringWheelView.OnWheelTouchListener { - override fun onCenterClicked() { - if (!isPreviewSuccess) { - val deviceItem = SDKGuider.sdkGuider.devManageGuider.DeviceItem() - deviceItem.szDevName = "" - deviceItem.devNetInfo = SDKGuider.sdkGuider.devManageGuider.DevNetInfo( - ProjectConstant.HK_NET_IP, - ProjectConstant.HK_NET_PORT, - ProjectConstant.HK_NET_USERNAME, - ProjectConstant.HK_NET_PASSWORD - ) - if (deviceItem.szDevName.isEmpty()) { - deviceItem.szDevName = deviceItem.devNetInfo.szIp - } - val loginV40Jna = SDKGuider.sdkGuider.devManageGuider.login_v40_jna( - deviceItem.szDevName, deviceItem.devNetInfo - ) - if (loginV40Jna) { - //配置设备通道 - try { - val deviceInfo = SDKGuider.sdkGuider.devManageGuider.devList[0] - returnUserId = deviceInfo.szUserId - - aChannelNum = - deviceInfo.deviceInfoV40_jna.struDeviceV30.byChanNum.toInt() - startAChannel = - deviceInfo.deviceInfoV40_jna.struDeviceV30.byStartChan.toInt() - - dChannelNum = - deviceInfo.deviceInfoV40_jna.struDeviceV30.byIPChanNum + deviceInfo.deviceInfoV40_jna.struDeviceV30.byHighDChanNum * 256 - startDChannel = - deviceInfo.deviceInfoV40_jna.struDeviceV30.byStartChan.toInt() - - var iAnalogStartChan = startAChannel - var iDigitalStartChan = startDChannel - - val channelList = ArrayList() - - for (i in 0 until aChannelNum) { - channelList.add("ACamera_$iAnalogStartChan") - iAnalogStartChan++ - } - - for (i in 0 until dChannelNum) { - channelList.add("DCamera_$iDigitalStartChan") - iDigitalStartChan++ - } - selectChannel = Integer.valueOf(channelList[0].getChannel()) - - val streamList = ArrayList() - streamList.add("main_stream") - streamList.add("sub_stream") - streamList.add("third_stream") - - //开始预览 - if (previewHandle != -1) { - SDKGuider.sdkGuider.devPreviewGuider.RealPlay_Stop_jni(previewHandle) - } - val strutPlayInfo = NET_DVR_PREVIEWINFO() - strutPlayInfo.lChannel = selectChannel - strutPlayInfo.dwStreamType = 1 - strutPlayInfo.bBlocked = 1 - strutPlayInfo.hHwnd = binding.surfaceView.holder - previewHandle = SDKGuider.sdkGuider.devPreviewGuider.RealPlay_V40_jni( - returnUserId, strutPlayInfo, null - ) - if (previewHandle < 0) { - Log.d(kTag, "initEvent: Err:${MessageCodeHub.getErrorCode()}") - return - } - isPreviewSuccess = true - "预览开启成功".show(context) - //开始计时 - timer = Timer() - timerTask = object : TimerTask() { - override fun run() { - seconds++ - lifecycleScope.launch(Dispatchers.Main) { - binding.runningTimeView.text = seconds.toTime() - } - } - } - timer?.schedule(timerTask, 0, 1000) - } catch (e: IndexOutOfBoundsException) { - e.printStackTrace() - "设备未正常连接,无法开启预览".show(context) - } - } else { - "设备登陆失败".show(context) - } - } else { - if (!SDKGuider.sdkGuider.devPreviewGuider.RealPlay_Stop_jni(previewHandle)) { - return - } - previewHandle = -1 - isPreviewSuccess = false - "预览关闭成功".show(context) - //停止计时 - timerTask?.cancel() - timer?.cancel() - } - } - - override fun onLeftTurn() { - if (isPreviewSuccess && isActionUp) { - hkSDK.NET_DVR_PTZControlWithSpeed( - previewHandle, PTZCommand.PAN_LEFT, 0, selectedSpeed - ) - isActionUp = false - } - } - - override fun onTopTurn() { - if (isPreviewSuccess && isActionUp) { - hkSDK.NET_DVR_PTZControlWithSpeed( - previewHandle, PTZCommand.TILT_UP, 0, selectedSpeed - ) - isActionUp = false - } - } - - override fun onRightTurn() { - if (isPreviewSuccess && isActionUp) { - hkSDK.NET_DVR_PTZControlWithSpeed( - previewHandle, PTZCommand.PAN_RIGHT, 0, selectedSpeed - ) - isActionUp = false - } - } - - override fun onBottomTurn() { - if (isPreviewSuccess && isActionUp) { - hkSDK.NET_DVR_PTZControlWithSpeed( - previewHandle, PTZCommand.TILT_DOWN, 0, selectedSpeed - ) - isActionUp = false - } - } - - override fun onActionTurnUp(dir: SteeringWheelView.Direction) { - when (dir) { - SteeringWheelView.Direction.LEFT -> { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.PAN_LEFT, 1) - isActionUp = true - } - - SteeringWheelView.Direction.TOP -> { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.TILT_UP, 1) - isActionUp = true - } - - SteeringWheelView.Direction.RIGHT -> { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.PAN_RIGHT, 1) - isActionUp = true - } - - SteeringWheelView.Direction.BOTTOM -> { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.TILT_DOWN, 1) - isActionUp = true - } - } - } - }) - - binding.upScaleButton.setOnTouchListener { _, event -> - when (event.action) { - MotionEvent.ACTION_DOWN -> { - if (isPreviewSuccess && isScaleButtonUp) { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_IN, 0) - isScaleButtonUp = false - } - } - - MotionEvent.ACTION_UP -> { - isScaleButtonUp = true - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_IN, 1) - } - } - false - } - - binding.downScaleButton.setOnTouchListener { _, event -> - when (event.action) { - MotionEvent.ACTION_DOWN -> { - if (isPreviewSuccess && isScaleButtonUp) { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_OUT, 0) - isScaleButtonUp = false - } - } - - MotionEvent.ACTION_UP -> { - isScaleButtonUp = true - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_OUT, 1) - } - } - false + binding.resetButton.setOnClickListener { + executeAngle(0, 0) } } diff --git a/app/src/main/res/drawable/bg_solid_layout_blue_10.xml b/app/src/main/res/drawable/bg_solid_layout_blue_10.xml new file mode 100644 index 0000000..b7e06e3 --- /dev/null +++ b/app/src/main/res/drawable/bg_solid_layout_blue_10.xml @@ -0,0 +1,7 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_stroke_layout_blue_10.xml b/app/src/main/res/drawable/bg_stroke_layout_blue_10.xml deleted file mode 100644 index d6f55c9..0000000 --- a/app/src/main/res/drawable/bg_stroke_layout_blue_10.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_camera.xml b/app/src/main/res/drawable/ic_camera.xml new file mode 100644 index 0000000..1f7ab22 --- /dev/null +++ b/app/src/main/res/drawable/ic_camera.xml @@ -0,0 +1,15 @@ + + + + + diff --git a/app/src/main/res/drawable/ic_dir_down.xml b/app/src/main/res/drawable/ic_dir_down.xml deleted file mode 100644 index e6807dc..0000000 --- a/app/src/main/res/drawable/ic_dir_down.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_dir_left.xml b/app/src/main/res/drawable/ic_dir_left.xml deleted file mode 100644 index 12b2237..0000000 --- a/app/src/main/res/drawable/ic_dir_left.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_dir_right.xml b/app/src/main/res/drawable/ic_dir_right.xml deleted file mode 100644 index 96539aa..0000000 --- a/app/src/main/res/drawable/ic_dir_right.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_dir_up.xml b/app/src/main/res/drawable/ic_dir_up.xml deleted file mode 100644 index e7a153e..0000000 --- a/app/src/main/res/drawable/ic_dir_up.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/build.gradle b/app/build.gradle index c2a2c53..64d4d0c 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -72,7 +72,7 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5.4' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.8' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.cardview:cardview:1.0.0' diff --git a/app/src/main/java/com/casic/endoscope/adapter/CameraPointAdapter.kt b/app/src/main/java/com/casic/endoscope/adapter/CameraPointAdapter.kt deleted file mode 100644 index fe404b2..0000000 --- a/app/src/main/java/com/casic/endoscope/adapter/CameraPointAdapter.kt +++ /dev/null @@ -1,78 +0,0 @@ -package com.casic.endoscope.adapter - -import android.annotation.SuppressLint -import android.content.Context -import android.graphics.Color -import android.view.LayoutInflater -import android.view.ViewGroup -import android.widget.LinearLayout -import androidx.recyclerview.widget.RecyclerView -import com.casic.endoscope.R -import com.casic.endoscope.bean.CameraPointBean -import com.pengxh.kt.lite.adapter.ViewHolder -import com.pengxh.kt.lite.extensions.convertColor - -class CameraPointAdapter( - private val context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var multipleSelected = mutableSetOf() - private var selectedItems = ArrayList() - - override fun getItemCount(): Int = dataRows.size - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { - return ViewHolder( - LayoutInflater.from(context).inflate(R.layout.item_point_list_rv, parent, false) - ) - } - - @SuppressLint("NotifyDataSetChanged") - fun setRefreshData(dataRows: MutableList) { - this.dataRows.clear() - this.dataRows.addAll(dataRows) - notifyDataSetChanged() - multipleSelected.clear() - selectedItems.clear() - } - - override fun onBindViewHolder(holder: ViewHolder, position: Int) { - val item = dataRows[position] - holder.setText(R.id.stepNameView, "步骤 ${item.step}") - .setText(R.id.hAngleView, "水平角度 ${item.hAngle}°") - .setText(R.id.vAngleView, "垂直角度 ${item.vAngle}°") - - val linearLayout = holder.itemView.findViewById(R.id.rootView) - //item背景色 - if (position % 2 == 0) { - linearLayout.setBackgroundColor(Color.parseColor("#C8E3F4")) - } else { - linearLayout.setBackgroundColor(R.color.backgroundColor.convertColor(context)) - } - - holder.itemView.isSelected = multipleSelected.contains(position) - holder.itemView.setOnClickListener { - if (multipleSelected.contains(position)) { - multipleSelected.remove(position) - selectedItems.remove(dataRows[position]) - holder.itemView.isSelected = false - } else { - multipleSelected.add(position) - selectedItems.add(dataRows[position]) - holder.itemView.isSelected = true - } - - itemCheckedListener?.onItemChecked(position, selectedItems) - } - } - - private var itemCheckedListener: OnItemCheckedListener? = null - - interface OnItemCheckedListener { - fun onItemChecked(position: Int, items: ArrayList) - } - - fun setOnItemCheckedListener(listener: OnItemCheckedListener) { - itemCheckedListener = listener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/endoscope/bean/CameraPointBean.java b/app/src/main/java/com/casic/endoscope/bean/CameraPointBean.java deleted file mode 100644 index 3a20d82..0000000 --- a/app/src/main/java/com/casic/endoscope/bean/CameraPointBean.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.casic.endoscope.bean; - -import org.greenrobot.greendao.annotation.Entity; -import org.greenrobot.greendao.annotation.Generated; -import org.greenrobot.greendao.annotation.Id; - -/** - * 必须是java,不能是kt - */ -@Entity -public class CameraPointBean { - - @Id(autoincrement = true) - private Long id;//主键自增 - - private int step;//步骤序号 - private int hAngle;//水平角度 - private int vAngle;//垂直角度 - - @Generated(hash = 1436018650) - public CameraPointBean(Long id, int step, int hAngle, int vAngle) { - this.id = id; - this.step = step; - this.hAngle = hAngle; - this.vAngle = vAngle; - } - - @Generated(hash = 44086073) - public CameraPointBean() { - } - - public Long getId() { - return this.id; - } - - public void setId(Long id) { - this.id = id; - } - - public int getStep() { - return this.step; - } - - public void setStep(int step) { - this.step = step; - } - - public int getHAngle() { - return this.hAngle; - } - - public void setHAngle(int hAngle) { - this.hAngle = hAngle; - } - - public int getVAngle() { - return this.vAngle; - } - - public void setVAngle(int vAngle) { - this.vAngle = vAngle; - } -} diff --git a/app/src/main/java/com/casic/endoscope/bean/GasValueBean.java b/app/src/main/java/com/casic/endoscope/bean/GasValueBean.java new file mode 100644 index 0000000..6537b9a --- /dev/null +++ b/app/src/main/java/com/casic/endoscope/bean/GasValueBean.java @@ -0,0 +1,63 @@ +package com.casic.endoscope.bean; + +import org.greenrobot.greendao.annotation.Entity; +import org.greenrobot.greendao.annotation.Generated; +import org.greenrobot.greendao.annotation.Id; + +/** + * 必须是java,不能是kt + * 甲烷浓度表结构 + */ +@Entity +public class GasValueBean { + @Id(autoincrement = true) + private Long id;//主键自增 + + private String time;//采集浓度的时间 + private int value;//采集的浓度 + private String location;//浓度采集点位置 + + @Generated(hash = 663679791) + public GasValueBean(Long id, String time, int value, String location) { + this.id = id; + this.time = time; + this.value = value; + this.location = location; + } + + @Generated(hash = 291409217) + public GasValueBean() { + } + + public Long getId() { + return this.id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getTime() { + return this.time; + } + + public void setTime(String time) { + this.time = time; + } + + public int getValue() { + return this.value; + } + + public void setValue(int value) { + this.value = value; + } + + public String getLocation() { + return this.location; + } + + public void setLocation(String location) { + this.location = location; + } +} diff --git a/app/src/main/java/com/casic/endoscope/greendao/CameraPointBeanDao.java b/app/src/main/java/com/casic/endoscope/greendao/CameraPointBeanDao.java deleted file mode 100644 index 11bc932..0000000 --- a/app/src/main/java/com/casic/endoscope/greendao/CameraPointBeanDao.java +++ /dev/null @@ -1,138 +0,0 @@ -package com.casic.endoscope.greendao; - -import android.database.Cursor; -import android.database.sqlite.SQLiteStatement; - -import com.casic.endoscope.bean.CameraPointBean; - -import org.greenrobot.greendao.AbstractDao; -import org.greenrobot.greendao.Property; -import org.greenrobot.greendao.database.Database; -import org.greenrobot.greendao.database.DatabaseStatement; -import org.greenrobot.greendao.internal.DaoConfig; - -// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. - -/** - * DAO for table "CAMERA_POINT_BEAN". - */ -public class CameraPointBeanDao extends AbstractDao { - - public static final String TABLENAME = "CAMERA_POINT_BEAN"; - - /** - * Properties of entity CameraPointBean.
- * Can be used for QueryBuilder and for referencing column names. - */ - public static class Properties { - public final static Property Id = new Property(0, Long.class, "id", true, "_id"); - public final static Property Step = new Property(1, int.class, "step", false, "STEP"); - public final static Property HAngle = new Property(2, int.class, "hAngle", false, "H_ANGLE"); - public final static Property VAngle = new Property(3, int.class, "vAngle", false, "V_ANGLE"); - } - - - public CameraPointBeanDao(DaoConfig config) { - super(config); - } - - public CameraPointBeanDao(DaoConfig config, DaoSession daoSession) { - super(config, daoSession); - } - - /** - * Creates the underlying database table. - */ - public static void createTable(Database db, boolean ifNotExists) { - String constraint = ifNotExists ? "IF NOT EXISTS " : ""; - db.execSQL("CREATE TABLE " + constraint + "\"CAMERA_POINT_BEAN\" (" + // - "\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id - "\"STEP\" INTEGER NOT NULL ," + // 1: step - "\"H_ANGLE\" INTEGER NOT NULL ," + // 2: hAngle - "\"V_ANGLE\" INTEGER NOT NULL );"); // 3: vAngle - } - - /** - * Drops the underlying database table. - */ - public static void dropTable(Database db, boolean ifExists) { - String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"CAMERA_POINT_BEAN\""; - db.execSQL(sql); - } - - @Override - protected final void bindValues(DatabaseStatement stmt, CameraPointBean entity) { - stmt.clearBindings(); - - Long id = entity.getId(); - if (id != null) { - stmt.bindLong(1, id); - } - stmt.bindLong(2, entity.getStep()); - stmt.bindLong(3, entity.getHAngle()); - stmt.bindLong(4, entity.getVAngle()); - } - - @Override - protected final void bindValues(SQLiteStatement stmt, CameraPointBean entity) { - stmt.clearBindings(); - - Long id = entity.getId(); - if (id != null) { - stmt.bindLong(1, id); - } - stmt.bindLong(2, entity.getStep()); - stmt.bindLong(3, entity.getHAngle()); - stmt.bindLong(4, entity.getVAngle()); - } - - @Override - public Long readKey(Cursor cursor, int offset) { - return cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0); - } - - @Override - public CameraPointBean readEntity(Cursor cursor, int offset) { - CameraPointBean entity = new CameraPointBean( // - cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id - cursor.getInt(offset + 1), // step - cursor.getInt(offset + 2), // hAngle - cursor.getInt(offset + 3) // vAngle - ); - return entity; - } - - @Override - public void readEntity(Cursor cursor, CameraPointBean entity, int offset) { - entity.setId(cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0)); - entity.setStep(cursor.getInt(offset + 1)); - entity.setHAngle(cursor.getInt(offset + 2)); - entity.setVAngle(cursor.getInt(offset + 3)); - } - - @Override - protected final Long updateKeyAfterInsert(CameraPointBean entity, long rowId) { - entity.setId(rowId); - return rowId; - } - - @Override - public Long getKey(CameraPointBean entity) { - if (entity != null) { - return entity.getId(); - } else { - return null; - } - } - - @Override - public boolean hasKey(CameraPointBean entity) { - return entity.getId() != null; - } - - @Override - protected final boolean isEntityUpdateable() { - return true; - } - -} diff --git a/app/src/main/java/com/casic/endoscope/greendao/DaoMaster.java b/app/src/main/java/com/casic/endoscope/greendao/DaoMaster.java index 5d4fa30..a455fd0 100644 --- a/app/src/main/java/com/casic/endoscope/greendao/DaoMaster.java +++ b/app/src/main/java/com/casic/endoscope/greendao/DaoMaster.java @@ -13,25 +13,20 @@ // THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. - /** * Master of DAO (schema version 1): knows all DAOs. */ public class DaoMaster extends AbstractDaoMaster { public static final int SCHEMA_VERSION = 1; - /** - * Creates underlying database table using DAOs. - */ + /** Creates underlying database table using DAOs. */ public static void createAllTables(Database db, boolean ifNotExists) { - CameraPointBeanDao.createTable(db, ifNotExists); + GasValueBeanDao.createTable(db, ifNotExists); } - /** - * Drops underlying database table using DAOs. - */ + /** Drops underlying database table using DAOs. */ public static void dropAllTables(Database db, boolean ifExists) { - CameraPointBeanDao.dropTable(db, ifExists); + GasValueBeanDao.dropTable(db, ifExists); } /** @@ -50,7 +45,7 @@ public DaoMaster(Database db) { super(db, SCHEMA_VERSION); - registerDaoClass(CameraPointBeanDao.class); + registerDaoClass(GasValueBeanDao.class); } public DaoSession newSession() { @@ -80,9 +75,7 @@ } } - /** - * WARNING: Drops all table on Upgrade! Use only during development. - */ + /** WARNING: Drops all table on Upgrade! Use only during development. */ public static class DevOpenHelper extends OpenHelper { public DevOpenHelper(Context context, String name) { super(context, name); diff --git a/app/src/main/java/com/casic/endoscope/greendao/DaoSession.java b/app/src/main/java/com/casic/endoscope/greendao/DaoSession.java index ed2f9c0..259243d 100644 --- a/app/src/main/java/com/casic/endoscope/greendao/DaoSession.java +++ b/app/src/main/java/com/casic/endoscope/greendao/DaoSession.java @@ -1,6 +1,6 @@ package com.casic.endoscope.greendao; -import com.casic.endoscope.bean.CameraPointBean; +import com.casic.endoscope.bean.GasValueBean; import org.greenrobot.greendao.AbstractDao; import org.greenrobot.greendao.AbstractDaoSession; @@ -19,28 +19,28 @@ */ public class DaoSession extends AbstractDaoSession { - private final DaoConfig cameraPointBeanDaoConfig; + private final DaoConfig gasValueBeanDaoConfig; - private final CameraPointBeanDao cameraPointBeanDao; + private final GasValueBeanDao gasValueBeanDao; public DaoSession(Database db, IdentityScopeType type, Map>, DaoConfig> daoConfigMap) { super(db); - cameraPointBeanDaoConfig = daoConfigMap.get(CameraPointBeanDao.class).clone(); - cameraPointBeanDaoConfig.initIdentityScope(type); + gasValueBeanDaoConfig = daoConfigMap.get(GasValueBeanDao.class).clone(); + gasValueBeanDaoConfig.initIdentityScope(type); - cameraPointBeanDao = new CameraPointBeanDao(cameraPointBeanDaoConfig, this); + gasValueBeanDao = new GasValueBeanDao(gasValueBeanDaoConfig, this); - registerDao(CameraPointBean.class, cameraPointBeanDao); + registerDao(GasValueBean.class, gasValueBeanDao); } public void clear() { - cameraPointBeanDaoConfig.clearIdentityScope(); + gasValueBeanDaoConfig.clearIdentityScope(); } - public CameraPointBeanDao getCameraPointBeanDao() { - return cameraPointBeanDao; + public GasValueBeanDao getGasValueBeanDao() { + return gasValueBeanDao; } } diff --git a/app/src/main/java/com/casic/endoscope/greendao/GasValueBeanDao.java b/app/src/main/java/com/casic/endoscope/greendao/GasValueBeanDao.java new file mode 100644 index 0000000..5149375 --- /dev/null +++ b/app/src/main/java/com/casic/endoscope/greendao/GasValueBeanDao.java @@ -0,0 +1,149 @@ +package com.casic.endoscope.greendao; + +import android.database.Cursor; +import android.database.sqlite.SQLiteStatement; + +import com.casic.endoscope.bean.GasValueBean; + +import org.greenrobot.greendao.AbstractDao; +import org.greenrobot.greendao.Property; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.database.DatabaseStatement; +import org.greenrobot.greendao.internal.DaoConfig; + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. +/** + * DAO for table "GAS_VALUE_BEAN". +*/ +public class GasValueBeanDao extends AbstractDao { + + public static final String TABLENAME = "GAS_VALUE_BEAN"; + + /** + * Properties of entity GasValueBean.
+ * Can be used for QueryBuilder and for referencing column names. + */ + public static class Properties { + public final static Property Id = new Property(0, Long.class, "id", true, "_id"); + public final static Property Time = new Property(1, String.class, "time", false, "TIME"); + public final static Property Value = new Property(2, int.class, "value", false, "VALUE"); + public final static Property Location = new Property(3, String.class, "location", false, "LOCATION"); + } + + + public GasValueBeanDao(DaoConfig config) { + super(config); + } + + public GasValueBeanDao(DaoConfig config, DaoSession daoSession) { + super(config, daoSession); + } + + /** Creates the underlying database table. */ + public static void createTable(Database db, boolean ifNotExists) { + String constraint = ifNotExists? "IF NOT EXISTS ": ""; + db.execSQL("CREATE TABLE " + constraint + "\"GAS_VALUE_BEAN\" (" + // + "\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id + "\"TIME\" TEXT," + // 1: time + "\"VALUE\" INTEGER NOT NULL ," + // 2: value + "\"LOCATION\" TEXT);"); // 3: location + } + + /** Drops the underlying database table. */ + public static void dropTable(Database db, boolean ifExists) { + String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"GAS_VALUE_BEAN\""; + db.execSQL(sql); + } + + @Override + protected final void bindValues(DatabaseStatement stmt, GasValueBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String time = entity.getTime(); + if (time != null) { + stmt.bindString(2, time); + } + stmt.bindLong(3, entity.getValue()); + + String location = entity.getLocation(); + if (location != null) { + stmt.bindString(4, location); + } + } + + @Override + protected final void bindValues(SQLiteStatement stmt, GasValueBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String time = entity.getTime(); + if (time != null) { + stmt.bindString(2, time); + } + stmt.bindLong(3, entity.getValue()); + + String location = entity.getLocation(); + if (location != null) { + stmt.bindString(4, location); + } + } + + @Override + public Long readKey(Cursor cursor, int offset) { + return cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0); + } + + @Override + public GasValueBean readEntity(Cursor cursor, int offset) { + GasValueBean entity = new GasValueBean( // + cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id + cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // time + cursor.getInt(offset + 2), // value + cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3) // location + ); + return entity; + } + + @Override + public void readEntity(Cursor cursor, GasValueBean entity, int offset) { + entity.setId(cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0)); + entity.setTime(cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1)); + entity.setValue(cursor.getInt(offset + 2)); + entity.setLocation(cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3)); + } + + @Override + protected final Long updateKeyAfterInsert(GasValueBean entity, long rowId) { + entity.setId(rowId); + return rowId; + } + + @Override + public Long getKey(GasValueBean entity) { + if(entity != null) { + return entity.getId(); + } else { + return null; + } + } + + @Override + public boolean hasKey(GasValueBean entity) { + return entity.getId() != null; + } + + @Override + protected final boolean isEntityUpdateable() { + return true; + } + +} diff --git a/app/src/main/java/com/casic/endoscope/utils/DataBaseManager.kt b/app/src/main/java/com/casic/endoscope/utils/DataBaseManager.kt index a593a5b..c683db1 100644 --- a/app/src/main/java/com/casic/endoscope/utils/DataBaseManager.kt +++ b/app/src/main/java/com/casic/endoscope/utils/DataBaseManager.kt @@ -1,8 +1,6 @@ package com.casic.endoscope.utils import com.casic.endoscope.base.BaseApplication -import com.casic.endoscope.bean.CameraPointBean -import com.casic.endoscope.greendao.CameraPointBeanDao class DataBaseManager private constructor() { @@ -13,31 +11,5 @@ } } - private var cameraPointDao = BaseApplication.get().getDaoSession().cameraPointBeanDao - - fun cacheCameraPoint(step: Int, h: Int, v: Int) { - val bean = CameraPointBean() - bean.step = step - bean.hAngle = h - bean.vAngle = v - cameraPointDao.insert(bean) - } - - fun deleteCameraPoints(beans: MutableList) { - beans.forEach { - cameraPointDao.delete(it) - } - } - - fun deleteAllCameraPoint() { - cameraPointDao.deleteAll() - } - - fun queryCameraPointById(id: Long): CameraPointBean { - return cameraPointDao.queryBuilder() - .where(CameraPointBeanDao.Properties.Id.eq(id)) - .unique() - } - - fun loadAllCameraPoint(): MutableList = cameraPointDao.loadAll() + private var gasValueBeanDao = BaseApplication.get().getDaoSession().gasValueBeanDao } \ No newline at end of file diff --git a/app/src/main/java/com/casic/endoscope/utils/EndoscopeDevOpenHelper.kt b/app/src/main/java/com/casic/endoscope/utils/EndoscopeDevOpenHelper.kt index 507b1ff..fd87f0f 100644 --- a/app/src/main/java/com/casic/endoscope/utils/EndoscopeDevOpenHelper.kt +++ b/app/src/main/java/com/casic/endoscope/utils/EndoscopeDevOpenHelper.kt @@ -2,8 +2,8 @@ import android.content.Context import android.database.sqlite.SQLiteDatabase.CursorFactory -import com.casic.endoscope.greendao.CameraPointBeanDao import com.casic.endoscope.greendao.DaoMaster +import com.casic.endoscope.greendao.GasValueBeanDao import com.github.yuweiguocn.library.greendao.MigrationHelper import com.github.yuweiguocn.library.greendao.MigrationHelper.ReCreateAllTableListener import org.greenrobot.greendao.database.Database @@ -22,7 +22,7 @@ DaoMaster.dropAllTables(db, ifExists) } }, - CameraPointBeanDao::class.java + GasValueBeanDao::class.java ) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/endoscope/view/MainActivity.kt b/app/src/main/java/com/casic/endoscope/view/MainActivity.kt index 0fe757e..c4509b0 100644 --- a/app/src/main/java/com/casic/endoscope/view/MainActivity.kt +++ b/app/src/main/java/com/casic/endoscope/view/MainActivity.kt @@ -15,8 +15,6 @@ import android.view.SurfaceHolder import android.view.View import androidx.lifecycle.lifecycleScope -import com.casic.endoscope.adapter.CameraPointAdapter -import com.casic.endoscope.bean.CameraPointBean import com.casic.endoscope.databinding.ActivityMainBinding import com.casic.endoscope.extensions.check import com.casic.endoscope.extensions.convertValue @@ -28,14 +26,12 @@ import com.casic.endoscope.extensions.init import com.casic.endoscope.extensions.toTime import com.casic.endoscope.service.VideoTranscodeService -import com.casic.endoscope.utils.DataBaseManager import com.casic.endoscope.utils.ProjectConstant import com.casic.endoscope.utils.ble.BleDeviceManager import com.casic.endoscope.utils.ble.OnDeviceConnectListener import com.casic.endoscope.utils.ble.OnDeviceDiscoveredListener import com.casic.endoscope.utils.hk.MessageCodeHub import com.casic.endoscope.utils.hk.SDKGuider -import com.casic.endoscope.widgets.AddCameraPointDialog import com.casic.endoscope.widgets.BluetoothDeviceDialog import com.casic.endoscope.widgets.LineChartMarkerView import com.github.mikephil.charting.data.Entry @@ -55,10 +51,8 @@ import com.pengxh.kt.lite.extensions.timestampToTime import com.pengxh.kt.lite.utils.LoadingDialogHub import com.pengxh.kt.lite.utils.WeakReferenceHandler -import com.pengxh.kt.lite.widget.SteeringWheelView import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch -import kotlinx.coroutines.withContext import java.text.SimpleDateFormat import java.util.Date import java.util.Locale @@ -101,17 +95,11 @@ //焦距按钮是否已松开 private var isScaleButtonUp = true - //是否拍照成功 - private var isCaptureSuccess = true - private var timer: Timer? = null private var timerTask: TimerTask? = null private var seconds = 0L - private var dataBeans: MutableList = ArrayList() - private var selectedItems: MutableList = ArrayList() private var inputVideoPath = "" private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var dataAdapter: CameraPointAdapter private lateinit var serviceIntent: Intent private lateinit var dataSet: LineDataSet private lateinit var lineData: LineData @@ -123,8 +111,6 @@ override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) - dataBeans = DataBaseManager.get.loadAllCameraPoint() - //显示数据 weakReferenceHandler.sendEmptyMessage(messageCode) @@ -147,13 +133,7 @@ override fun handleMessage(msg: Message): Boolean { if (msg.what == messageCode) { //绑定数据 - dataAdapter = CameraPointAdapter(this, dataBeans) - binding.recyclerView.adapter = dataAdapter - dataAdapter.setOnItemCheckedListener(object : CameraPointAdapter.OnItemCheckedListener { - override fun onItemChecked(position: Int, items: ArrayList) { - selectedItems = items - } - }) + } return true } @@ -209,6 +189,180 @@ } } + binding.upScaleButton.setOnTouchListener { _, event -> + when (event.action) { + MotionEvent.ACTION_DOWN -> { + if (isPreviewSuccess && isScaleButtonUp) { + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_IN, 0) + isScaleButtonUp = false + } + } + + MotionEvent.ACTION_UP -> { + isScaleButtonUp = true + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_IN, 1) + } + } + false + } + + binding.downScaleButton.setOnTouchListener { _, event -> + when (event.action) { + MotionEvent.ACTION_DOWN -> { + if (isPreviewSuccess && isScaleButtonUp) { + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_OUT, 0) + isScaleButtonUp = false + } + } + + MotionEvent.ACTION_UP -> { + isScaleButtonUp = true + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_OUT, 1) + } + } + false + } + + binding.topButton.setOnTouchListener { _, motionEvent -> + when (motionEvent.action) { + MotionEvent.ACTION_DOWN -> { + if (isPreviewSuccess && isActionUp) { + hkSDK.NET_DVR_PTZControlWithSpeed( + previewHandle, PTZCommand.TILT_UP, 0, selectedSpeed + ) + isActionUp = false + } + } + + MotionEvent.ACTION_UP -> { + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.TILT_UP, 1) + isActionUp = true + } + } + false + } + + binding.centerButton.setOnClickListener { + if (!isPreviewSuccess) { + val deviceItem = SDKGuider.sdkGuider.devManageGuider.DeviceItem() + deviceItem.szDevName = "" + deviceItem.devNetInfo = SDKGuider.sdkGuider.devManageGuider.DevNetInfo( + ProjectConstant.HK_NET_IP, + ProjectConstant.HK_NET_PORT, + ProjectConstant.HK_NET_USERNAME, + ProjectConstant.HK_NET_PASSWORD + ) + if (deviceItem.szDevName.isEmpty()) { + deviceItem.szDevName = deviceItem.devNetInfo.szIp + } + val loginV40Jna = SDKGuider.sdkGuider.devManageGuider.login_v40_jna( + deviceItem.szDevName, deviceItem.devNetInfo + ) + if (loginV40Jna) { + //配置设备通道 + try { + val deviceInfo = SDKGuider.sdkGuider.devManageGuider.devList[0] + returnUserId = deviceInfo.szUserId + + aChannelNum = + deviceInfo.deviceInfoV40_jna.struDeviceV30.byChanNum.toInt() + startAChannel = + deviceInfo.deviceInfoV40_jna.struDeviceV30.byStartChan.toInt() + + dChannelNum = + deviceInfo.deviceInfoV40_jna.struDeviceV30.byIPChanNum + deviceInfo.deviceInfoV40_jna.struDeviceV30.byHighDChanNum * 256 + startDChannel = + deviceInfo.deviceInfoV40_jna.struDeviceV30.byStartChan.toInt() + + var iAnalogStartChan = startAChannel + var iDigitalStartChan = startDChannel + + val channelList = ArrayList() + + for (i in 0 until aChannelNum) { + channelList.add("ACamera_$iAnalogStartChan") + iAnalogStartChan++ + } + + for (i in 0 until dChannelNum) { + channelList.add("DCamera_$iDigitalStartChan") + iDigitalStartChan++ + } + selectChannel = Integer.valueOf(channelList[0].getChannel()) + + val streamList = ArrayList() + streamList.add("main_stream") + streamList.add("sub_stream") + streamList.add("third_stream") + + //开始预览 + if (previewHandle != -1) { + SDKGuider.sdkGuider.devPreviewGuider.RealPlay_Stop_jni(previewHandle) + } + val strutPlayInfo = NET_DVR_PREVIEWINFO() + strutPlayInfo.lChannel = selectChannel + strutPlayInfo.dwStreamType = 1 + strutPlayInfo.bBlocked = 1 + strutPlayInfo.hHwnd = binding.surfaceView.holder + previewHandle = SDKGuider.sdkGuider.devPreviewGuider.RealPlay_V40_jni( + returnUserId, strutPlayInfo, null + ) + if (previewHandle < 0) { + Log.d(kTag, "initEvent: Err:${MessageCodeHub.getErrorCode()}") + return@setOnClickListener + } + isPreviewSuccess = true + "预览开启成功".show(context) + //开始计时 + timer = Timer() + timerTask = object : TimerTask() { + override fun run() { + seconds++ + lifecycleScope.launch(Dispatchers.Main) { + binding.runningTimeView.text = seconds.toTime() + } + } + } + timer?.schedule(timerTask, 0, 1000) + } catch (e: IndexOutOfBoundsException) { + e.printStackTrace() + "设备未正常连接,无法开启预览".show(context) + } + } else { + "设备登陆失败".show(context) + } + } else { + if (!SDKGuider.sdkGuider.devPreviewGuider.RealPlay_Stop_jni(previewHandle)) { + return@setOnClickListener + } + previewHandle = -1 + isPreviewSuccess = false + "预览关闭成功".show(context) + //停止计时 + timerTask?.cancel() + timer?.cancel() + } + } + + binding.bottomButton.setOnTouchListener { _, motionEvent -> + when (motionEvent.action) { + MotionEvent.ACTION_DOWN -> { + if (isPreviewSuccess && isActionUp) { + hkSDK.NET_DVR_PTZControlWithSpeed( + previewHandle, PTZCommand.TILT_DOWN, 0, selectedSpeed + ) + isActionUp = false + } + } + + MotionEvent.ACTION_UP -> { + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.TILT_DOWN, 1) + isActionUp = true + } + } + false + } + //单张拍照 binding.imageButton.setOnClickListener { if (isPreviewSuccess) { @@ -252,278 +406,8 @@ true } - //连续拍照 - binding.multipleImageButton.setOnClickListener { - if (dataBeans.isEmpty()) { - "请先设置连续拍照步骤".show(this) - return@setOnClickListener - } - if (isPreviewSuccess) { - lifecycleScope.launch(Dispatchers.IO) { - dataBeans.forEach { - //再拍照 - if (isCaptureSuccess) { - isCaptureSuccess = false - - //先执行角度 - executeAngle(it.hAngle, it.vAngle) - - withContext(Dispatchers.Main) { - "抓取步骤${it.step}画面".show(context) - } - - val strJpeg = NET_DVR_JPEGPARA() - strJpeg.wPicQuality = 1 - strJpeg.wPicSize = 2 - - val imagePath = - "/${createImageFileDir()}/${timeFormat.format(Date())}.png" - hkSDK.NET_DVR_CaptureJPEGPicture( - returnUserId, selectChannel, strJpeg, imagePath - ) - - isCaptureSuccess = MessageCodeHub.getErrorCode() == 0 - } - } - withContext(Dispatchers.Main) { - "连续抓取画面完成".show(context) - } - } - } else { - "摄像头预览未打开,无法拍照".show(this) - } - } - - binding.addButton.setOnClickListener { - val step = if (dataBeans.isEmpty()) { - 0 - } else { - dataBeans.last().step - } - AddCameraPointDialog.Builder().setContext(this).setLastStep(step) - .setNegativeButton("取消").setPositiveButton("添加") - .setOnDialogButtonClickListener(object : - AddCameraPointDialog.OnDialogButtonClickListener { - override fun onConfirmClick(step: Int, hAngle: Int, vAngle: Int) { - DataBaseManager.get.cacheCameraPoint(step, hAngle, vAngle) - dataBeans = DataBaseManager.get.loadAllCameraPoint() - dataAdapter.setRefreshData(dataBeans) - } - - override fun onCancelClick() { - - } - }).build().show() - } - - binding.deleteButton.setOnClickListener { - if (selectedItems.isEmpty()) { - "请先选择要删除的步骤".show(this) - return@setOnClickListener - } - DataBaseManager.get.deleteCameraPoints(selectedItems) - dataBeans = DataBaseManager.get.loadAllCameraPoint() - dataAdapter.setRefreshData(dataBeans) - selectedItems.clear() - } - - binding.steeringWheelView.setOnWheelTouchListener(object : - SteeringWheelView.OnWheelTouchListener { - override fun onCenterClicked() { - if (!isPreviewSuccess) { - val deviceItem = SDKGuider.sdkGuider.devManageGuider.DeviceItem() - deviceItem.szDevName = "" - deviceItem.devNetInfo = SDKGuider.sdkGuider.devManageGuider.DevNetInfo( - ProjectConstant.HK_NET_IP, - ProjectConstant.HK_NET_PORT, - ProjectConstant.HK_NET_USERNAME, - ProjectConstant.HK_NET_PASSWORD - ) - if (deviceItem.szDevName.isEmpty()) { - deviceItem.szDevName = deviceItem.devNetInfo.szIp - } - val loginV40Jna = SDKGuider.sdkGuider.devManageGuider.login_v40_jna( - deviceItem.szDevName, deviceItem.devNetInfo - ) - if (loginV40Jna) { - //配置设备通道 - try { - val deviceInfo = SDKGuider.sdkGuider.devManageGuider.devList[0] - returnUserId = deviceInfo.szUserId - - aChannelNum = - deviceInfo.deviceInfoV40_jna.struDeviceV30.byChanNum.toInt() - startAChannel = - deviceInfo.deviceInfoV40_jna.struDeviceV30.byStartChan.toInt() - - dChannelNum = - deviceInfo.deviceInfoV40_jna.struDeviceV30.byIPChanNum + deviceInfo.deviceInfoV40_jna.struDeviceV30.byHighDChanNum * 256 - startDChannel = - deviceInfo.deviceInfoV40_jna.struDeviceV30.byStartChan.toInt() - - var iAnalogStartChan = startAChannel - var iDigitalStartChan = startDChannel - - val channelList = ArrayList() - - for (i in 0 until aChannelNum) { - channelList.add("ACamera_$iAnalogStartChan") - iAnalogStartChan++ - } - - for (i in 0 until dChannelNum) { - channelList.add("DCamera_$iDigitalStartChan") - iDigitalStartChan++ - } - selectChannel = Integer.valueOf(channelList[0].getChannel()) - - val streamList = ArrayList() - streamList.add("main_stream") - streamList.add("sub_stream") - streamList.add("third_stream") - - //开始预览 - if (previewHandle != -1) { - SDKGuider.sdkGuider.devPreviewGuider.RealPlay_Stop_jni(previewHandle) - } - val strutPlayInfo = NET_DVR_PREVIEWINFO() - strutPlayInfo.lChannel = selectChannel - strutPlayInfo.dwStreamType = 1 - strutPlayInfo.bBlocked = 1 - strutPlayInfo.hHwnd = binding.surfaceView.holder - previewHandle = SDKGuider.sdkGuider.devPreviewGuider.RealPlay_V40_jni( - returnUserId, strutPlayInfo, null - ) - if (previewHandle < 0) { - Log.d(kTag, "initEvent: Err:${MessageCodeHub.getErrorCode()}") - return - } - isPreviewSuccess = true - "预览开启成功".show(context) - //开始计时 - timer = Timer() - timerTask = object : TimerTask() { - override fun run() { - seconds++ - lifecycleScope.launch(Dispatchers.Main) { - binding.runningTimeView.text = seconds.toTime() - } - } - } - timer?.schedule(timerTask, 0, 1000) - } catch (e: IndexOutOfBoundsException) { - e.printStackTrace() - "设备未正常连接,无法开启预览".show(context) - } - } else { - "设备登陆失败".show(context) - } - } else { - if (!SDKGuider.sdkGuider.devPreviewGuider.RealPlay_Stop_jni(previewHandle)) { - return - } - previewHandle = -1 - isPreviewSuccess = false - "预览关闭成功".show(context) - //停止计时 - timerTask?.cancel() - timer?.cancel() - } - } - - override fun onLeftTurn() { - if (isPreviewSuccess && isActionUp) { - hkSDK.NET_DVR_PTZControlWithSpeed( - previewHandle, PTZCommand.PAN_LEFT, 0, selectedSpeed - ) - isActionUp = false - } - } - - override fun onTopTurn() { - if (isPreviewSuccess && isActionUp) { - hkSDK.NET_DVR_PTZControlWithSpeed( - previewHandle, PTZCommand.TILT_UP, 0, selectedSpeed - ) - isActionUp = false - } - } - - override fun onRightTurn() { - if (isPreviewSuccess && isActionUp) { - hkSDK.NET_DVR_PTZControlWithSpeed( - previewHandle, PTZCommand.PAN_RIGHT, 0, selectedSpeed - ) - isActionUp = false - } - } - - override fun onBottomTurn() { - if (isPreviewSuccess && isActionUp) { - hkSDK.NET_DVR_PTZControlWithSpeed( - previewHandle, PTZCommand.TILT_DOWN, 0, selectedSpeed - ) - isActionUp = false - } - } - - override fun onActionTurnUp(dir: SteeringWheelView.Direction) { - when (dir) { - SteeringWheelView.Direction.LEFT -> { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.PAN_LEFT, 1) - isActionUp = true - } - - SteeringWheelView.Direction.TOP -> { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.TILT_UP, 1) - isActionUp = true - } - - SteeringWheelView.Direction.RIGHT -> { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.PAN_RIGHT, 1) - isActionUp = true - } - - SteeringWheelView.Direction.BOTTOM -> { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.TILT_DOWN, 1) - isActionUp = true - } - } - } - }) - - binding.upScaleButton.setOnTouchListener { _, event -> - when (event.action) { - MotionEvent.ACTION_DOWN -> { - if (isPreviewSuccess && isScaleButtonUp) { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_IN, 0) - isScaleButtonUp = false - } - } - - MotionEvent.ACTION_UP -> { - isScaleButtonUp = true - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_IN, 1) - } - } - false - } - - binding.downScaleButton.setOnTouchListener { _, event -> - when (event.action) { - MotionEvent.ACTION_DOWN -> { - if (isPreviewSuccess && isScaleButtonUp) { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_OUT, 0) - isScaleButtonUp = false - } - } - - MotionEvent.ACTION_UP -> { - isScaleButtonUp = true - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_OUT, 1) - } - } - false + binding.resetButton.setOnClickListener { + executeAngle(0, 0) } } diff --git a/app/src/main/res/drawable/bg_solid_layout_blue_10.xml b/app/src/main/res/drawable/bg_solid_layout_blue_10.xml new file mode 100644 index 0000000..b7e06e3 --- /dev/null +++ b/app/src/main/res/drawable/bg_solid_layout_blue_10.xml @@ -0,0 +1,7 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_stroke_layout_blue_10.xml b/app/src/main/res/drawable/bg_stroke_layout_blue_10.xml deleted file mode 100644 index d6f55c9..0000000 --- a/app/src/main/res/drawable/bg_stroke_layout_blue_10.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_camera.xml b/app/src/main/res/drawable/ic_camera.xml new file mode 100644 index 0000000..1f7ab22 --- /dev/null +++ b/app/src/main/res/drawable/ic_camera.xml @@ -0,0 +1,15 @@ + + + + + diff --git a/app/src/main/res/drawable/ic_dir_down.xml b/app/src/main/res/drawable/ic_dir_down.xml deleted file mode 100644 index e6807dc..0000000 --- a/app/src/main/res/drawable/ic_dir_down.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_dir_left.xml b/app/src/main/res/drawable/ic_dir_left.xml deleted file mode 100644 index 12b2237..0000000 --- a/app/src/main/res/drawable/ic_dir_left.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_dir_right.xml b/app/src/main/res/drawable/ic_dir_right.xml deleted file mode 100644 index 96539aa..0000000 --- a/app/src/main/res/drawable/ic_dir_right.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_dir_up.xml b/app/src/main/res/drawable/ic_dir_up.xml deleted file mode 100644 index e7a153e..0000000 --- a/app/src/main/res/drawable/ic_dir_up.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_down.xml b/app/src/main/res/drawable/ic_down.xml new file mode 100644 index 0000000..9fcd974 --- /dev/null +++ b/app/src/main/res/drawable/ic_down.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/build.gradle b/app/build.gradle index c2a2c53..64d4d0c 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -72,7 +72,7 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5.4' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.8' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.cardview:cardview:1.0.0' diff --git a/app/src/main/java/com/casic/endoscope/adapter/CameraPointAdapter.kt b/app/src/main/java/com/casic/endoscope/adapter/CameraPointAdapter.kt deleted file mode 100644 index fe404b2..0000000 --- a/app/src/main/java/com/casic/endoscope/adapter/CameraPointAdapter.kt +++ /dev/null @@ -1,78 +0,0 @@ -package com.casic.endoscope.adapter - -import android.annotation.SuppressLint -import android.content.Context -import android.graphics.Color -import android.view.LayoutInflater -import android.view.ViewGroup -import android.widget.LinearLayout -import androidx.recyclerview.widget.RecyclerView -import com.casic.endoscope.R -import com.casic.endoscope.bean.CameraPointBean -import com.pengxh.kt.lite.adapter.ViewHolder -import com.pengxh.kt.lite.extensions.convertColor - -class CameraPointAdapter( - private val context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var multipleSelected = mutableSetOf() - private var selectedItems = ArrayList() - - override fun getItemCount(): Int = dataRows.size - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { - return ViewHolder( - LayoutInflater.from(context).inflate(R.layout.item_point_list_rv, parent, false) - ) - } - - @SuppressLint("NotifyDataSetChanged") - fun setRefreshData(dataRows: MutableList) { - this.dataRows.clear() - this.dataRows.addAll(dataRows) - notifyDataSetChanged() - multipleSelected.clear() - selectedItems.clear() - } - - override fun onBindViewHolder(holder: ViewHolder, position: Int) { - val item = dataRows[position] - holder.setText(R.id.stepNameView, "步骤 ${item.step}") - .setText(R.id.hAngleView, "水平角度 ${item.hAngle}°") - .setText(R.id.vAngleView, "垂直角度 ${item.vAngle}°") - - val linearLayout = holder.itemView.findViewById(R.id.rootView) - //item背景色 - if (position % 2 == 0) { - linearLayout.setBackgroundColor(Color.parseColor("#C8E3F4")) - } else { - linearLayout.setBackgroundColor(R.color.backgroundColor.convertColor(context)) - } - - holder.itemView.isSelected = multipleSelected.contains(position) - holder.itemView.setOnClickListener { - if (multipleSelected.contains(position)) { - multipleSelected.remove(position) - selectedItems.remove(dataRows[position]) - holder.itemView.isSelected = false - } else { - multipleSelected.add(position) - selectedItems.add(dataRows[position]) - holder.itemView.isSelected = true - } - - itemCheckedListener?.onItemChecked(position, selectedItems) - } - } - - private var itemCheckedListener: OnItemCheckedListener? = null - - interface OnItemCheckedListener { - fun onItemChecked(position: Int, items: ArrayList) - } - - fun setOnItemCheckedListener(listener: OnItemCheckedListener) { - itemCheckedListener = listener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/endoscope/bean/CameraPointBean.java b/app/src/main/java/com/casic/endoscope/bean/CameraPointBean.java deleted file mode 100644 index 3a20d82..0000000 --- a/app/src/main/java/com/casic/endoscope/bean/CameraPointBean.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.casic.endoscope.bean; - -import org.greenrobot.greendao.annotation.Entity; -import org.greenrobot.greendao.annotation.Generated; -import org.greenrobot.greendao.annotation.Id; - -/** - * 必须是java,不能是kt - */ -@Entity -public class CameraPointBean { - - @Id(autoincrement = true) - private Long id;//主键自增 - - private int step;//步骤序号 - private int hAngle;//水平角度 - private int vAngle;//垂直角度 - - @Generated(hash = 1436018650) - public CameraPointBean(Long id, int step, int hAngle, int vAngle) { - this.id = id; - this.step = step; - this.hAngle = hAngle; - this.vAngle = vAngle; - } - - @Generated(hash = 44086073) - public CameraPointBean() { - } - - public Long getId() { - return this.id; - } - - public void setId(Long id) { - this.id = id; - } - - public int getStep() { - return this.step; - } - - public void setStep(int step) { - this.step = step; - } - - public int getHAngle() { - return this.hAngle; - } - - public void setHAngle(int hAngle) { - this.hAngle = hAngle; - } - - public int getVAngle() { - return this.vAngle; - } - - public void setVAngle(int vAngle) { - this.vAngle = vAngle; - } -} diff --git a/app/src/main/java/com/casic/endoscope/bean/GasValueBean.java b/app/src/main/java/com/casic/endoscope/bean/GasValueBean.java new file mode 100644 index 0000000..6537b9a --- /dev/null +++ b/app/src/main/java/com/casic/endoscope/bean/GasValueBean.java @@ -0,0 +1,63 @@ +package com.casic.endoscope.bean; + +import org.greenrobot.greendao.annotation.Entity; +import org.greenrobot.greendao.annotation.Generated; +import org.greenrobot.greendao.annotation.Id; + +/** + * 必须是java,不能是kt + * 甲烷浓度表结构 + */ +@Entity +public class GasValueBean { + @Id(autoincrement = true) + private Long id;//主键自增 + + private String time;//采集浓度的时间 + private int value;//采集的浓度 + private String location;//浓度采集点位置 + + @Generated(hash = 663679791) + public GasValueBean(Long id, String time, int value, String location) { + this.id = id; + this.time = time; + this.value = value; + this.location = location; + } + + @Generated(hash = 291409217) + public GasValueBean() { + } + + public Long getId() { + return this.id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getTime() { + return this.time; + } + + public void setTime(String time) { + this.time = time; + } + + public int getValue() { + return this.value; + } + + public void setValue(int value) { + this.value = value; + } + + public String getLocation() { + return this.location; + } + + public void setLocation(String location) { + this.location = location; + } +} diff --git a/app/src/main/java/com/casic/endoscope/greendao/CameraPointBeanDao.java b/app/src/main/java/com/casic/endoscope/greendao/CameraPointBeanDao.java deleted file mode 100644 index 11bc932..0000000 --- a/app/src/main/java/com/casic/endoscope/greendao/CameraPointBeanDao.java +++ /dev/null @@ -1,138 +0,0 @@ -package com.casic.endoscope.greendao; - -import android.database.Cursor; -import android.database.sqlite.SQLiteStatement; - -import com.casic.endoscope.bean.CameraPointBean; - -import org.greenrobot.greendao.AbstractDao; -import org.greenrobot.greendao.Property; -import org.greenrobot.greendao.database.Database; -import org.greenrobot.greendao.database.DatabaseStatement; -import org.greenrobot.greendao.internal.DaoConfig; - -// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. - -/** - * DAO for table "CAMERA_POINT_BEAN". - */ -public class CameraPointBeanDao extends AbstractDao { - - public static final String TABLENAME = "CAMERA_POINT_BEAN"; - - /** - * Properties of entity CameraPointBean.
- * Can be used for QueryBuilder and for referencing column names. - */ - public static class Properties { - public final static Property Id = new Property(0, Long.class, "id", true, "_id"); - public final static Property Step = new Property(1, int.class, "step", false, "STEP"); - public final static Property HAngle = new Property(2, int.class, "hAngle", false, "H_ANGLE"); - public final static Property VAngle = new Property(3, int.class, "vAngle", false, "V_ANGLE"); - } - - - public CameraPointBeanDao(DaoConfig config) { - super(config); - } - - public CameraPointBeanDao(DaoConfig config, DaoSession daoSession) { - super(config, daoSession); - } - - /** - * Creates the underlying database table. - */ - public static void createTable(Database db, boolean ifNotExists) { - String constraint = ifNotExists ? "IF NOT EXISTS " : ""; - db.execSQL("CREATE TABLE " + constraint + "\"CAMERA_POINT_BEAN\" (" + // - "\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id - "\"STEP\" INTEGER NOT NULL ," + // 1: step - "\"H_ANGLE\" INTEGER NOT NULL ," + // 2: hAngle - "\"V_ANGLE\" INTEGER NOT NULL );"); // 3: vAngle - } - - /** - * Drops the underlying database table. - */ - public static void dropTable(Database db, boolean ifExists) { - String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"CAMERA_POINT_BEAN\""; - db.execSQL(sql); - } - - @Override - protected final void bindValues(DatabaseStatement stmt, CameraPointBean entity) { - stmt.clearBindings(); - - Long id = entity.getId(); - if (id != null) { - stmt.bindLong(1, id); - } - stmt.bindLong(2, entity.getStep()); - stmt.bindLong(3, entity.getHAngle()); - stmt.bindLong(4, entity.getVAngle()); - } - - @Override - protected final void bindValues(SQLiteStatement stmt, CameraPointBean entity) { - stmt.clearBindings(); - - Long id = entity.getId(); - if (id != null) { - stmt.bindLong(1, id); - } - stmt.bindLong(2, entity.getStep()); - stmt.bindLong(3, entity.getHAngle()); - stmt.bindLong(4, entity.getVAngle()); - } - - @Override - public Long readKey(Cursor cursor, int offset) { - return cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0); - } - - @Override - public CameraPointBean readEntity(Cursor cursor, int offset) { - CameraPointBean entity = new CameraPointBean( // - cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id - cursor.getInt(offset + 1), // step - cursor.getInt(offset + 2), // hAngle - cursor.getInt(offset + 3) // vAngle - ); - return entity; - } - - @Override - public void readEntity(Cursor cursor, CameraPointBean entity, int offset) { - entity.setId(cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0)); - entity.setStep(cursor.getInt(offset + 1)); - entity.setHAngle(cursor.getInt(offset + 2)); - entity.setVAngle(cursor.getInt(offset + 3)); - } - - @Override - protected final Long updateKeyAfterInsert(CameraPointBean entity, long rowId) { - entity.setId(rowId); - return rowId; - } - - @Override - public Long getKey(CameraPointBean entity) { - if (entity != null) { - return entity.getId(); - } else { - return null; - } - } - - @Override - public boolean hasKey(CameraPointBean entity) { - return entity.getId() != null; - } - - @Override - protected final boolean isEntityUpdateable() { - return true; - } - -} diff --git a/app/src/main/java/com/casic/endoscope/greendao/DaoMaster.java b/app/src/main/java/com/casic/endoscope/greendao/DaoMaster.java index 5d4fa30..a455fd0 100644 --- a/app/src/main/java/com/casic/endoscope/greendao/DaoMaster.java +++ b/app/src/main/java/com/casic/endoscope/greendao/DaoMaster.java @@ -13,25 +13,20 @@ // THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. - /** * Master of DAO (schema version 1): knows all DAOs. */ public class DaoMaster extends AbstractDaoMaster { public static final int SCHEMA_VERSION = 1; - /** - * Creates underlying database table using DAOs. - */ + /** Creates underlying database table using DAOs. */ public static void createAllTables(Database db, boolean ifNotExists) { - CameraPointBeanDao.createTable(db, ifNotExists); + GasValueBeanDao.createTable(db, ifNotExists); } - /** - * Drops underlying database table using DAOs. - */ + /** Drops underlying database table using DAOs. */ public static void dropAllTables(Database db, boolean ifExists) { - CameraPointBeanDao.dropTable(db, ifExists); + GasValueBeanDao.dropTable(db, ifExists); } /** @@ -50,7 +45,7 @@ public DaoMaster(Database db) { super(db, SCHEMA_VERSION); - registerDaoClass(CameraPointBeanDao.class); + registerDaoClass(GasValueBeanDao.class); } public DaoSession newSession() { @@ -80,9 +75,7 @@ } } - /** - * WARNING: Drops all table on Upgrade! Use only during development. - */ + /** WARNING: Drops all table on Upgrade! Use only during development. */ public static class DevOpenHelper extends OpenHelper { public DevOpenHelper(Context context, String name) { super(context, name); diff --git a/app/src/main/java/com/casic/endoscope/greendao/DaoSession.java b/app/src/main/java/com/casic/endoscope/greendao/DaoSession.java index ed2f9c0..259243d 100644 --- a/app/src/main/java/com/casic/endoscope/greendao/DaoSession.java +++ b/app/src/main/java/com/casic/endoscope/greendao/DaoSession.java @@ -1,6 +1,6 @@ package com.casic.endoscope.greendao; -import com.casic.endoscope.bean.CameraPointBean; +import com.casic.endoscope.bean.GasValueBean; import org.greenrobot.greendao.AbstractDao; import org.greenrobot.greendao.AbstractDaoSession; @@ -19,28 +19,28 @@ */ public class DaoSession extends AbstractDaoSession { - private final DaoConfig cameraPointBeanDaoConfig; + private final DaoConfig gasValueBeanDaoConfig; - private final CameraPointBeanDao cameraPointBeanDao; + private final GasValueBeanDao gasValueBeanDao; public DaoSession(Database db, IdentityScopeType type, Map>, DaoConfig> daoConfigMap) { super(db); - cameraPointBeanDaoConfig = daoConfigMap.get(CameraPointBeanDao.class).clone(); - cameraPointBeanDaoConfig.initIdentityScope(type); + gasValueBeanDaoConfig = daoConfigMap.get(GasValueBeanDao.class).clone(); + gasValueBeanDaoConfig.initIdentityScope(type); - cameraPointBeanDao = new CameraPointBeanDao(cameraPointBeanDaoConfig, this); + gasValueBeanDao = new GasValueBeanDao(gasValueBeanDaoConfig, this); - registerDao(CameraPointBean.class, cameraPointBeanDao); + registerDao(GasValueBean.class, gasValueBeanDao); } public void clear() { - cameraPointBeanDaoConfig.clearIdentityScope(); + gasValueBeanDaoConfig.clearIdentityScope(); } - public CameraPointBeanDao getCameraPointBeanDao() { - return cameraPointBeanDao; + public GasValueBeanDao getGasValueBeanDao() { + return gasValueBeanDao; } } diff --git a/app/src/main/java/com/casic/endoscope/greendao/GasValueBeanDao.java b/app/src/main/java/com/casic/endoscope/greendao/GasValueBeanDao.java new file mode 100644 index 0000000..5149375 --- /dev/null +++ b/app/src/main/java/com/casic/endoscope/greendao/GasValueBeanDao.java @@ -0,0 +1,149 @@ +package com.casic.endoscope.greendao; + +import android.database.Cursor; +import android.database.sqlite.SQLiteStatement; + +import com.casic.endoscope.bean.GasValueBean; + +import org.greenrobot.greendao.AbstractDao; +import org.greenrobot.greendao.Property; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.database.DatabaseStatement; +import org.greenrobot.greendao.internal.DaoConfig; + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. +/** + * DAO for table "GAS_VALUE_BEAN". +*/ +public class GasValueBeanDao extends AbstractDao { + + public static final String TABLENAME = "GAS_VALUE_BEAN"; + + /** + * Properties of entity GasValueBean.
+ * Can be used for QueryBuilder and for referencing column names. + */ + public static class Properties { + public final static Property Id = new Property(0, Long.class, "id", true, "_id"); + public final static Property Time = new Property(1, String.class, "time", false, "TIME"); + public final static Property Value = new Property(2, int.class, "value", false, "VALUE"); + public final static Property Location = new Property(3, String.class, "location", false, "LOCATION"); + } + + + public GasValueBeanDao(DaoConfig config) { + super(config); + } + + public GasValueBeanDao(DaoConfig config, DaoSession daoSession) { + super(config, daoSession); + } + + /** Creates the underlying database table. */ + public static void createTable(Database db, boolean ifNotExists) { + String constraint = ifNotExists? "IF NOT EXISTS ": ""; + db.execSQL("CREATE TABLE " + constraint + "\"GAS_VALUE_BEAN\" (" + // + "\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id + "\"TIME\" TEXT," + // 1: time + "\"VALUE\" INTEGER NOT NULL ," + // 2: value + "\"LOCATION\" TEXT);"); // 3: location + } + + /** Drops the underlying database table. */ + public static void dropTable(Database db, boolean ifExists) { + String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"GAS_VALUE_BEAN\""; + db.execSQL(sql); + } + + @Override + protected final void bindValues(DatabaseStatement stmt, GasValueBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String time = entity.getTime(); + if (time != null) { + stmt.bindString(2, time); + } + stmt.bindLong(3, entity.getValue()); + + String location = entity.getLocation(); + if (location != null) { + stmt.bindString(4, location); + } + } + + @Override + protected final void bindValues(SQLiteStatement stmt, GasValueBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String time = entity.getTime(); + if (time != null) { + stmt.bindString(2, time); + } + stmt.bindLong(3, entity.getValue()); + + String location = entity.getLocation(); + if (location != null) { + stmt.bindString(4, location); + } + } + + @Override + public Long readKey(Cursor cursor, int offset) { + return cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0); + } + + @Override + public GasValueBean readEntity(Cursor cursor, int offset) { + GasValueBean entity = new GasValueBean( // + cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id + cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // time + cursor.getInt(offset + 2), // value + cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3) // location + ); + return entity; + } + + @Override + public void readEntity(Cursor cursor, GasValueBean entity, int offset) { + entity.setId(cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0)); + entity.setTime(cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1)); + entity.setValue(cursor.getInt(offset + 2)); + entity.setLocation(cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3)); + } + + @Override + protected final Long updateKeyAfterInsert(GasValueBean entity, long rowId) { + entity.setId(rowId); + return rowId; + } + + @Override + public Long getKey(GasValueBean entity) { + if(entity != null) { + return entity.getId(); + } else { + return null; + } + } + + @Override + public boolean hasKey(GasValueBean entity) { + return entity.getId() != null; + } + + @Override + protected final boolean isEntityUpdateable() { + return true; + } + +} diff --git a/app/src/main/java/com/casic/endoscope/utils/DataBaseManager.kt b/app/src/main/java/com/casic/endoscope/utils/DataBaseManager.kt index a593a5b..c683db1 100644 --- a/app/src/main/java/com/casic/endoscope/utils/DataBaseManager.kt +++ b/app/src/main/java/com/casic/endoscope/utils/DataBaseManager.kt @@ -1,8 +1,6 @@ package com.casic.endoscope.utils import com.casic.endoscope.base.BaseApplication -import com.casic.endoscope.bean.CameraPointBean -import com.casic.endoscope.greendao.CameraPointBeanDao class DataBaseManager private constructor() { @@ -13,31 +11,5 @@ } } - private var cameraPointDao = BaseApplication.get().getDaoSession().cameraPointBeanDao - - fun cacheCameraPoint(step: Int, h: Int, v: Int) { - val bean = CameraPointBean() - bean.step = step - bean.hAngle = h - bean.vAngle = v - cameraPointDao.insert(bean) - } - - fun deleteCameraPoints(beans: MutableList) { - beans.forEach { - cameraPointDao.delete(it) - } - } - - fun deleteAllCameraPoint() { - cameraPointDao.deleteAll() - } - - fun queryCameraPointById(id: Long): CameraPointBean { - return cameraPointDao.queryBuilder() - .where(CameraPointBeanDao.Properties.Id.eq(id)) - .unique() - } - - fun loadAllCameraPoint(): MutableList = cameraPointDao.loadAll() + private var gasValueBeanDao = BaseApplication.get().getDaoSession().gasValueBeanDao } \ No newline at end of file diff --git a/app/src/main/java/com/casic/endoscope/utils/EndoscopeDevOpenHelper.kt b/app/src/main/java/com/casic/endoscope/utils/EndoscopeDevOpenHelper.kt index 507b1ff..fd87f0f 100644 --- a/app/src/main/java/com/casic/endoscope/utils/EndoscopeDevOpenHelper.kt +++ b/app/src/main/java/com/casic/endoscope/utils/EndoscopeDevOpenHelper.kt @@ -2,8 +2,8 @@ import android.content.Context import android.database.sqlite.SQLiteDatabase.CursorFactory -import com.casic.endoscope.greendao.CameraPointBeanDao import com.casic.endoscope.greendao.DaoMaster +import com.casic.endoscope.greendao.GasValueBeanDao import com.github.yuweiguocn.library.greendao.MigrationHelper import com.github.yuweiguocn.library.greendao.MigrationHelper.ReCreateAllTableListener import org.greenrobot.greendao.database.Database @@ -22,7 +22,7 @@ DaoMaster.dropAllTables(db, ifExists) } }, - CameraPointBeanDao::class.java + GasValueBeanDao::class.java ) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/endoscope/view/MainActivity.kt b/app/src/main/java/com/casic/endoscope/view/MainActivity.kt index 0fe757e..c4509b0 100644 --- a/app/src/main/java/com/casic/endoscope/view/MainActivity.kt +++ b/app/src/main/java/com/casic/endoscope/view/MainActivity.kt @@ -15,8 +15,6 @@ import android.view.SurfaceHolder import android.view.View import androidx.lifecycle.lifecycleScope -import com.casic.endoscope.adapter.CameraPointAdapter -import com.casic.endoscope.bean.CameraPointBean import com.casic.endoscope.databinding.ActivityMainBinding import com.casic.endoscope.extensions.check import com.casic.endoscope.extensions.convertValue @@ -28,14 +26,12 @@ import com.casic.endoscope.extensions.init import com.casic.endoscope.extensions.toTime import com.casic.endoscope.service.VideoTranscodeService -import com.casic.endoscope.utils.DataBaseManager import com.casic.endoscope.utils.ProjectConstant import com.casic.endoscope.utils.ble.BleDeviceManager import com.casic.endoscope.utils.ble.OnDeviceConnectListener import com.casic.endoscope.utils.ble.OnDeviceDiscoveredListener import com.casic.endoscope.utils.hk.MessageCodeHub import com.casic.endoscope.utils.hk.SDKGuider -import com.casic.endoscope.widgets.AddCameraPointDialog import com.casic.endoscope.widgets.BluetoothDeviceDialog import com.casic.endoscope.widgets.LineChartMarkerView import com.github.mikephil.charting.data.Entry @@ -55,10 +51,8 @@ import com.pengxh.kt.lite.extensions.timestampToTime import com.pengxh.kt.lite.utils.LoadingDialogHub import com.pengxh.kt.lite.utils.WeakReferenceHandler -import com.pengxh.kt.lite.widget.SteeringWheelView import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch -import kotlinx.coroutines.withContext import java.text.SimpleDateFormat import java.util.Date import java.util.Locale @@ -101,17 +95,11 @@ //焦距按钮是否已松开 private var isScaleButtonUp = true - //是否拍照成功 - private var isCaptureSuccess = true - private var timer: Timer? = null private var timerTask: TimerTask? = null private var seconds = 0L - private var dataBeans: MutableList = ArrayList() - private var selectedItems: MutableList = ArrayList() private var inputVideoPath = "" private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var dataAdapter: CameraPointAdapter private lateinit var serviceIntent: Intent private lateinit var dataSet: LineDataSet private lateinit var lineData: LineData @@ -123,8 +111,6 @@ override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) - dataBeans = DataBaseManager.get.loadAllCameraPoint() - //显示数据 weakReferenceHandler.sendEmptyMessage(messageCode) @@ -147,13 +133,7 @@ override fun handleMessage(msg: Message): Boolean { if (msg.what == messageCode) { //绑定数据 - dataAdapter = CameraPointAdapter(this, dataBeans) - binding.recyclerView.adapter = dataAdapter - dataAdapter.setOnItemCheckedListener(object : CameraPointAdapter.OnItemCheckedListener { - override fun onItemChecked(position: Int, items: ArrayList) { - selectedItems = items - } - }) + } return true } @@ -209,6 +189,180 @@ } } + binding.upScaleButton.setOnTouchListener { _, event -> + when (event.action) { + MotionEvent.ACTION_DOWN -> { + if (isPreviewSuccess && isScaleButtonUp) { + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_IN, 0) + isScaleButtonUp = false + } + } + + MotionEvent.ACTION_UP -> { + isScaleButtonUp = true + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_IN, 1) + } + } + false + } + + binding.downScaleButton.setOnTouchListener { _, event -> + when (event.action) { + MotionEvent.ACTION_DOWN -> { + if (isPreviewSuccess && isScaleButtonUp) { + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_OUT, 0) + isScaleButtonUp = false + } + } + + MotionEvent.ACTION_UP -> { + isScaleButtonUp = true + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_OUT, 1) + } + } + false + } + + binding.topButton.setOnTouchListener { _, motionEvent -> + when (motionEvent.action) { + MotionEvent.ACTION_DOWN -> { + if (isPreviewSuccess && isActionUp) { + hkSDK.NET_DVR_PTZControlWithSpeed( + previewHandle, PTZCommand.TILT_UP, 0, selectedSpeed + ) + isActionUp = false + } + } + + MotionEvent.ACTION_UP -> { + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.TILT_UP, 1) + isActionUp = true + } + } + false + } + + binding.centerButton.setOnClickListener { + if (!isPreviewSuccess) { + val deviceItem = SDKGuider.sdkGuider.devManageGuider.DeviceItem() + deviceItem.szDevName = "" + deviceItem.devNetInfo = SDKGuider.sdkGuider.devManageGuider.DevNetInfo( + ProjectConstant.HK_NET_IP, + ProjectConstant.HK_NET_PORT, + ProjectConstant.HK_NET_USERNAME, + ProjectConstant.HK_NET_PASSWORD + ) + if (deviceItem.szDevName.isEmpty()) { + deviceItem.szDevName = deviceItem.devNetInfo.szIp + } + val loginV40Jna = SDKGuider.sdkGuider.devManageGuider.login_v40_jna( + deviceItem.szDevName, deviceItem.devNetInfo + ) + if (loginV40Jna) { + //配置设备通道 + try { + val deviceInfo = SDKGuider.sdkGuider.devManageGuider.devList[0] + returnUserId = deviceInfo.szUserId + + aChannelNum = + deviceInfo.deviceInfoV40_jna.struDeviceV30.byChanNum.toInt() + startAChannel = + deviceInfo.deviceInfoV40_jna.struDeviceV30.byStartChan.toInt() + + dChannelNum = + deviceInfo.deviceInfoV40_jna.struDeviceV30.byIPChanNum + deviceInfo.deviceInfoV40_jna.struDeviceV30.byHighDChanNum * 256 + startDChannel = + deviceInfo.deviceInfoV40_jna.struDeviceV30.byStartChan.toInt() + + var iAnalogStartChan = startAChannel + var iDigitalStartChan = startDChannel + + val channelList = ArrayList() + + for (i in 0 until aChannelNum) { + channelList.add("ACamera_$iAnalogStartChan") + iAnalogStartChan++ + } + + for (i in 0 until dChannelNum) { + channelList.add("DCamera_$iDigitalStartChan") + iDigitalStartChan++ + } + selectChannel = Integer.valueOf(channelList[0].getChannel()) + + val streamList = ArrayList() + streamList.add("main_stream") + streamList.add("sub_stream") + streamList.add("third_stream") + + //开始预览 + if (previewHandle != -1) { + SDKGuider.sdkGuider.devPreviewGuider.RealPlay_Stop_jni(previewHandle) + } + val strutPlayInfo = NET_DVR_PREVIEWINFO() + strutPlayInfo.lChannel = selectChannel + strutPlayInfo.dwStreamType = 1 + strutPlayInfo.bBlocked = 1 + strutPlayInfo.hHwnd = binding.surfaceView.holder + previewHandle = SDKGuider.sdkGuider.devPreviewGuider.RealPlay_V40_jni( + returnUserId, strutPlayInfo, null + ) + if (previewHandle < 0) { + Log.d(kTag, "initEvent: Err:${MessageCodeHub.getErrorCode()}") + return@setOnClickListener + } + isPreviewSuccess = true + "预览开启成功".show(context) + //开始计时 + timer = Timer() + timerTask = object : TimerTask() { + override fun run() { + seconds++ + lifecycleScope.launch(Dispatchers.Main) { + binding.runningTimeView.text = seconds.toTime() + } + } + } + timer?.schedule(timerTask, 0, 1000) + } catch (e: IndexOutOfBoundsException) { + e.printStackTrace() + "设备未正常连接,无法开启预览".show(context) + } + } else { + "设备登陆失败".show(context) + } + } else { + if (!SDKGuider.sdkGuider.devPreviewGuider.RealPlay_Stop_jni(previewHandle)) { + return@setOnClickListener + } + previewHandle = -1 + isPreviewSuccess = false + "预览关闭成功".show(context) + //停止计时 + timerTask?.cancel() + timer?.cancel() + } + } + + binding.bottomButton.setOnTouchListener { _, motionEvent -> + when (motionEvent.action) { + MotionEvent.ACTION_DOWN -> { + if (isPreviewSuccess && isActionUp) { + hkSDK.NET_DVR_PTZControlWithSpeed( + previewHandle, PTZCommand.TILT_DOWN, 0, selectedSpeed + ) + isActionUp = false + } + } + + MotionEvent.ACTION_UP -> { + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.TILT_DOWN, 1) + isActionUp = true + } + } + false + } + //单张拍照 binding.imageButton.setOnClickListener { if (isPreviewSuccess) { @@ -252,278 +406,8 @@ true } - //连续拍照 - binding.multipleImageButton.setOnClickListener { - if (dataBeans.isEmpty()) { - "请先设置连续拍照步骤".show(this) - return@setOnClickListener - } - if (isPreviewSuccess) { - lifecycleScope.launch(Dispatchers.IO) { - dataBeans.forEach { - //再拍照 - if (isCaptureSuccess) { - isCaptureSuccess = false - - //先执行角度 - executeAngle(it.hAngle, it.vAngle) - - withContext(Dispatchers.Main) { - "抓取步骤${it.step}画面".show(context) - } - - val strJpeg = NET_DVR_JPEGPARA() - strJpeg.wPicQuality = 1 - strJpeg.wPicSize = 2 - - val imagePath = - "/${createImageFileDir()}/${timeFormat.format(Date())}.png" - hkSDK.NET_DVR_CaptureJPEGPicture( - returnUserId, selectChannel, strJpeg, imagePath - ) - - isCaptureSuccess = MessageCodeHub.getErrorCode() == 0 - } - } - withContext(Dispatchers.Main) { - "连续抓取画面完成".show(context) - } - } - } else { - "摄像头预览未打开,无法拍照".show(this) - } - } - - binding.addButton.setOnClickListener { - val step = if (dataBeans.isEmpty()) { - 0 - } else { - dataBeans.last().step - } - AddCameraPointDialog.Builder().setContext(this).setLastStep(step) - .setNegativeButton("取消").setPositiveButton("添加") - .setOnDialogButtonClickListener(object : - AddCameraPointDialog.OnDialogButtonClickListener { - override fun onConfirmClick(step: Int, hAngle: Int, vAngle: Int) { - DataBaseManager.get.cacheCameraPoint(step, hAngle, vAngle) - dataBeans = DataBaseManager.get.loadAllCameraPoint() - dataAdapter.setRefreshData(dataBeans) - } - - override fun onCancelClick() { - - } - }).build().show() - } - - binding.deleteButton.setOnClickListener { - if (selectedItems.isEmpty()) { - "请先选择要删除的步骤".show(this) - return@setOnClickListener - } - DataBaseManager.get.deleteCameraPoints(selectedItems) - dataBeans = DataBaseManager.get.loadAllCameraPoint() - dataAdapter.setRefreshData(dataBeans) - selectedItems.clear() - } - - binding.steeringWheelView.setOnWheelTouchListener(object : - SteeringWheelView.OnWheelTouchListener { - override fun onCenterClicked() { - if (!isPreviewSuccess) { - val deviceItem = SDKGuider.sdkGuider.devManageGuider.DeviceItem() - deviceItem.szDevName = "" - deviceItem.devNetInfo = SDKGuider.sdkGuider.devManageGuider.DevNetInfo( - ProjectConstant.HK_NET_IP, - ProjectConstant.HK_NET_PORT, - ProjectConstant.HK_NET_USERNAME, - ProjectConstant.HK_NET_PASSWORD - ) - if (deviceItem.szDevName.isEmpty()) { - deviceItem.szDevName = deviceItem.devNetInfo.szIp - } - val loginV40Jna = SDKGuider.sdkGuider.devManageGuider.login_v40_jna( - deviceItem.szDevName, deviceItem.devNetInfo - ) - if (loginV40Jna) { - //配置设备通道 - try { - val deviceInfo = SDKGuider.sdkGuider.devManageGuider.devList[0] - returnUserId = deviceInfo.szUserId - - aChannelNum = - deviceInfo.deviceInfoV40_jna.struDeviceV30.byChanNum.toInt() - startAChannel = - deviceInfo.deviceInfoV40_jna.struDeviceV30.byStartChan.toInt() - - dChannelNum = - deviceInfo.deviceInfoV40_jna.struDeviceV30.byIPChanNum + deviceInfo.deviceInfoV40_jna.struDeviceV30.byHighDChanNum * 256 - startDChannel = - deviceInfo.deviceInfoV40_jna.struDeviceV30.byStartChan.toInt() - - var iAnalogStartChan = startAChannel - var iDigitalStartChan = startDChannel - - val channelList = ArrayList() - - for (i in 0 until aChannelNum) { - channelList.add("ACamera_$iAnalogStartChan") - iAnalogStartChan++ - } - - for (i in 0 until dChannelNum) { - channelList.add("DCamera_$iDigitalStartChan") - iDigitalStartChan++ - } - selectChannel = Integer.valueOf(channelList[0].getChannel()) - - val streamList = ArrayList() - streamList.add("main_stream") - streamList.add("sub_stream") - streamList.add("third_stream") - - //开始预览 - if (previewHandle != -1) { - SDKGuider.sdkGuider.devPreviewGuider.RealPlay_Stop_jni(previewHandle) - } - val strutPlayInfo = NET_DVR_PREVIEWINFO() - strutPlayInfo.lChannel = selectChannel - strutPlayInfo.dwStreamType = 1 - strutPlayInfo.bBlocked = 1 - strutPlayInfo.hHwnd = binding.surfaceView.holder - previewHandle = SDKGuider.sdkGuider.devPreviewGuider.RealPlay_V40_jni( - returnUserId, strutPlayInfo, null - ) - if (previewHandle < 0) { - Log.d(kTag, "initEvent: Err:${MessageCodeHub.getErrorCode()}") - return - } - isPreviewSuccess = true - "预览开启成功".show(context) - //开始计时 - timer = Timer() - timerTask = object : TimerTask() { - override fun run() { - seconds++ - lifecycleScope.launch(Dispatchers.Main) { - binding.runningTimeView.text = seconds.toTime() - } - } - } - timer?.schedule(timerTask, 0, 1000) - } catch (e: IndexOutOfBoundsException) { - e.printStackTrace() - "设备未正常连接,无法开启预览".show(context) - } - } else { - "设备登陆失败".show(context) - } - } else { - if (!SDKGuider.sdkGuider.devPreviewGuider.RealPlay_Stop_jni(previewHandle)) { - return - } - previewHandle = -1 - isPreviewSuccess = false - "预览关闭成功".show(context) - //停止计时 - timerTask?.cancel() - timer?.cancel() - } - } - - override fun onLeftTurn() { - if (isPreviewSuccess && isActionUp) { - hkSDK.NET_DVR_PTZControlWithSpeed( - previewHandle, PTZCommand.PAN_LEFT, 0, selectedSpeed - ) - isActionUp = false - } - } - - override fun onTopTurn() { - if (isPreviewSuccess && isActionUp) { - hkSDK.NET_DVR_PTZControlWithSpeed( - previewHandle, PTZCommand.TILT_UP, 0, selectedSpeed - ) - isActionUp = false - } - } - - override fun onRightTurn() { - if (isPreviewSuccess && isActionUp) { - hkSDK.NET_DVR_PTZControlWithSpeed( - previewHandle, PTZCommand.PAN_RIGHT, 0, selectedSpeed - ) - isActionUp = false - } - } - - override fun onBottomTurn() { - if (isPreviewSuccess && isActionUp) { - hkSDK.NET_DVR_PTZControlWithSpeed( - previewHandle, PTZCommand.TILT_DOWN, 0, selectedSpeed - ) - isActionUp = false - } - } - - override fun onActionTurnUp(dir: SteeringWheelView.Direction) { - when (dir) { - SteeringWheelView.Direction.LEFT -> { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.PAN_LEFT, 1) - isActionUp = true - } - - SteeringWheelView.Direction.TOP -> { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.TILT_UP, 1) - isActionUp = true - } - - SteeringWheelView.Direction.RIGHT -> { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.PAN_RIGHT, 1) - isActionUp = true - } - - SteeringWheelView.Direction.BOTTOM -> { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.TILT_DOWN, 1) - isActionUp = true - } - } - } - }) - - binding.upScaleButton.setOnTouchListener { _, event -> - when (event.action) { - MotionEvent.ACTION_DOWN -> { - if (isPreviewSuccess && isScaleButtonUp) { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_IN, 0) - isScaleButtonUp = false - } - } - - MotionEvent.ACTION_UP -> { - isScaleButtonUp = true - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_IN, 1) - } - } - false - } - - binding.downScaleButton.setOnTouchListener { _, event -> - when (event.action) { - MotionEvent.ACTION_DOWN -> { - if (isPreviewSuccess && isScaleButtonUp) { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_OUT, 0) - isScaleButtonUp = false - } - } - - MotionEvent.ACTION_UP -> { - isScaleButtonUp = true - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_OUT, 1) - } - } - false + binding.resetButton.setOnClickListener { + executeAngle(0, 0) } } diff --git a/app/src/main/res/drawable/bg_solid_layout_blue_10.xml b/app/src/main/res/drawable/bg_solid_layout_blue_10.xml new file mode 100644 index 0000000..b7e06e3 --- /dev/null +++ b/app/src/main/res/drawable/bg_solid_layout_blue_10.xml @@ -0,0 +1,7 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_stroke_layout_blue_10.xml b/app/src/main/res/drawable/bg_stroke_layout_blue_10.xml deleted file mode 100644 index d6f55c9..0000000 --- a/app/src/main/res/drawable/bg_stroke_layout_blue_10.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_camera.xml b/app/src/main/res/drawable/ic_camera.xml new file mode 100644 index 0000000..1f7ab22 --- /dev/null +++ b/app/src/main/res/drawable/ic_camera.xml @@ -0,0 +1,15 @@ + + + + + diff --git a/app/src/main/res/drawable/ic_dir_down.xml b/app/src/main/res/drawable/ic_dir_down.xml deleted file mode 100644 index e6807dc..0000000 --- a/app/src/main/res/drawable/ic_dir_down.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_dir_left.xml b/app/src/main/res/drawable/ic_dir_left.xml deleted file mode 100644 index 12b2237..0000000 --- a/app/src/main/res/drawable/ic_dir_left.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_dir_right.xml b/app/src/main/res/drawable/ic_dir_right.xml deleted file mode 100644 index 96539aa..0000000 --- a/app/src/main/res/drawable/ic_dir_right.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_dir_up.xml b/app/src/main/res/drawable/ic_dir_up.xml deleted file mode 100644 index e7a153e..0000000 --- a/app/src/main/res/drawable/ic_dir_up.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_down.xml b/app/src/main/res/drawable/ic_down.xml new file mode 100644 index 0000000..9fcd974 --- /dev/null +++ b/app/src/main/res/drawable/ic_down.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_minus.xml b/app/src/main/res/drawable/ic_minus.xml index a399f5f..2942b80 100644 --- a/app/src/main/res/drawable/ic_minus.xml +++ b/app/src/main/res/drawable/ic_minus.xml @@ -1,9 +1,9 @@ + android:fillColor="#1875F0" + android:pathData="M864,480H160c-17.6,0 -32,14.4 -32,32s14.4,32 32,32h704c17.6,0 32,-14.4 32,-32s-14.4,-32 -32,-32z" /> diff --git a/app/build.gradle b/app/build.gradle index c2a2c53..64d4d0c 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -72,7 +72,7 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5.4' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.8' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.cardview:cardview:1.0.0' diff --git a/app/src/main/java/com/casic/endoscope/adapter/CameraPointAdapter.kt b/app/src/main/java/com/casic/endoscope/adapter/CameraPointAdapter.kt deleted file mode 100644 index fe404b2..0000000 --- a/app/src/main/java/com/casic/endoscope/adapter/CameraPointAdapter.kt +++ /dev/null @@ -1,78 +0,0 @@ -package com.casic.endoscope.adapter - -import android.annotation.SuppressLint -import android.content.Context -import android.graphics.Color -import android.view.LayoutInflater -import android.view.ViewGroup -import android.widget.LinearLayout -import androidx.recyclerview.widget.RecyclerView -import com.casic.endoscope.R -import com.casic.endoscope.bean.CameraPointBean -import com.pengxh.kt.lite.adapter.ViewHolder -import com.pengxh.kt.lite.extensions.convertColor - -class CameraPointAdapter( - private val context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var multipleSelected = mutableSetOf() - private var selectedItems = ArrayList() - - override fun getItemCount(): Int = dataRows.size - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { - return ViewHolder( - LayoutInflater.from(context).inflate(R.layout.item_point_list_rv, parent, false) - ) - } - - @SuppressLint("NotifyDataSetChanged") - fun setRefreshData(dataRows: MutableList) { - this.dataRows.clear() - this.dataRows.addAll(dataRows) - notifyDataSetChanged() - multipleSelected.clear() - selectedItems.clear() - } - - override fun onBindViewHolder(holder: ViewHolder, position: Int) { - val item = dataRows[position] - holder.setText(R.id.stepNameView, "步骤 ${item.step}") - .setText(R.id.hAngleView, "水平角度 ${item.hAngle}°") - .setText(R.id.vAngleView, "垂直角度 ${item.vAngle}°") - - val linearLayout = holder.itemView.findViewById(R.id.rootView) - //item背景色 - if (position % 2 == 0) { - linearLayout.setBackgroundColor(Color.parseColor("#C8E3F4")) - } else { - linearLayout.setBackgroundColor(R.color.backgroundColor.convertColor(context)) - } - - holder.itemView.isSelected = multipleSelected.contains(position) - holder.itemView.setOnClickListener { - if (multipleSelected.contains(position)) { - multipleSelected.remove(position) - selectedItems.remove(dataRows[position]) - holder.itemView.isSelected = false - } else { - multipleSelected.add(position) - selectedItems.add(dataRows[position]) - holder.itemView.isSelected = true - } - - itemCheckedListener?.onItemChecked(position, selectedItems) - } - } - - private var itemCheckedListener: OnItemCheckedListener? = null - - interface OnItemCheckedListener { - fun onItemChecked(position: Int, items: ArrayList) - } - - fun setOnItemCheckedListener(listener: OnItemCheckedListener) { - itemCheckedListener = listener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/endoscope/bean/CameraPointBean.java b/app/src/main/java/com/casic/endoscope/bean/CameraPointBean.java deleted file mode 100644 index 3a20d82..0000000 --- a/app/src/main/java/com/casic/endoscope/bean/CameraPointBean.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.casic.endoscope.bean; - -import org.greenrobot.greendao.annotation.Entity; -import org.greenrobot.greendao.annotation.Generated; -import org.greenrobot.greendao.annotation.Id; - -/** - * 必须是java,不能是kt - */ -@Entity -public class CameraPointBean { - - @Id(autoincrement = true) - private Long id;//主键自增 - - private int step;//步骤序号 - private int hAngle;//水平角度 - private int vAngle;//垂直角度 - - @Generated(hash = 1436018650) - public CameraPointBean(Long id, int step, int hAngle, int vAngle) { - this.id = id; - this.step = step; - this.hAngle = hAngle; - this.vAngle = vAngle; - } - - @Generated(hash = 44086073) - public CameraPointBean() { - } - - public Long getId() { - return this.id; - } - - public void setId(Long id) { - this.id = id; - } - - public int getStep() { - return this.step; - } - - public void setStep(int step) { - this.step = step; - } - - public int getHAngle() { - return this.hAngle; - } - - public void setHAngle(int hAngle) { - this.hAngle = hAngle; - } - - public int getVAngle() { - return this.vAngle; - } - - public void setVAngle(int vAngle) { - this.vAngle = vAngle; - } -} diff --git a/app/src/main/java/com/casic/endoscope/bean/GasValueBean.java b/app/src/main/java/com/casic/endoscope/bean/GasValueBean.java new file mode 100644 index 0000000..6537b9a --- /dev/null +++ b/app/src/main/java/com/casic/endoscope/bean/GasValueBean.java @@ -0,0 +1,63 @@ +package com.casic.endoscope.bean; + +import org.greenrobot.greendao.annotation.Entity; +import org.greenrobot.greendao.annotation.Generated; +import org.greenrobot.greendao.annotation.Id; + +/** + * 必须是java,不能是kt + * 甲烷浓度表结构 + */ +@Entity +public class GasValueBean { + @Id(autoincrement = true) + private Long id;//主键自增 + + private String time;//采集浓度的时间 + private int value;//采集的浓度 + private String location;//浓度采集点位置 + + @Generated(hash = 663679791) + public GasValueBean(Long id, String time, int value, String location) { + this.id = id; + this.time = time; + this.value = value; + this.location = location; + } + + @Generated(hash = 291409217) + public GasValueBean() { + } + + public Long getId() { + return this.id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getTime() { + return this.time; + } + + public void setTime(String time) { + this.time = time; + } + + public int getValue() { + return this.value; + } + + public void setValue(int value) { + this.value = value; + } + + public String getLocation() { + return this.location; + } + + public void setLocation(String location) { + this.location = location; + } +} diff --git a/app/src/main/java/com/casic/endoscope/greendao/CameraPointBeanDao.java b/app/src/main/java/com/casic/endoscope/greendao/CameraPointBeanDao.java deleted file mode 100644 index 11bc932..0000000 --- a/app/src/main/java/com/casic/endoscope/greendao/CameraPointBeanDao.java +++ /dev/null @@ -1,138 +0,0 @@ -package com.casic.endoscope.greendao; - -import android.database.Cursor; -import android.database.sqlite.SQLiteStatement; - -import com.casic.endoscope.bean.CameraPointBean; - -import org.greenrobot.greendao.AbstractDao; -import org.greenrobot.greendao.Property; -import org.greenrobot.greendao.database.Database; -import org.greenrobot.greendao.database.DatabaseStatement; -import org.greenrobot.greendao.internal.DaoConfig; - -// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. - -/** - * DAO for table "CAMERA_POINT_BEAN". - */ -public class CameraPointBeanDao extends AbstractDao { - - public static final String TABLENAME = "CAMERA_POINT_BEAN"; - - /** - * Properties of entity CameraPointBean.
- * Can be used for QueryBuilder and for referencing column names. - */ - public static class Properties { - public final static Property Id = new Property(0, Long.class, "id", true, "_id"); - public final static Property Step = new Property(1, int.class, "step", false, "STEP"); - public final static Property HAngle = new Property(2, int.class, "hAngle", false, "H_ANGLE"); - public final static Property VAngle = new Property(3, int.class, "vAngle", false, "V_ANGLE"); - } - - - public CameraPointBeanDao(DaoConfig config) { - super(config); - } - - public CameraPointBeanDao(DaoConfig config, DaoSession daoSession) { - super(config, daoSession); - } - - /** - * Creates the underlying database table. - */ - public static void createTable(Database db, boolean ifNotExists) { - String constraint = ifNotExists ? "IF NOT EXISTS " : ""; - db.execSQL("CREATE TABLE " + constraint + "\"CAMERA_POINT_BEAN\" (" + // - "\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id - "\"STEP\" INTEGER NOT NULL ," + // 1: step - "\"H_ANGLE\" INTEGER NOT NULL ," + // 2: hAngle - "\"V_ANGLE\" INTEGER NOT NULL );"); // 3: vAngle - } - - /** - * Drops the underlying database table. - */ - public static void dropTable(Database db, boolean ifExists) { - String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"CAMERA_POINT_BEAN\""; - db.execSQL(sql); - } - - @Override - protected final void bindValues(DatabaseStatement stmt, CameraPointBean entity) { - stmt.clearBindings(); - - Long id = entity.getId(); - if (id != null) { - stmt.bindLong(1, id); - } - stmt.bindLong(2, entity.getStep()); - stmt.bindLong(3, entity.getHAngle()); - stmt.bindLong(4, entity.getVAngle()); - } - - @Override - protected final void bindValues(SQLiteStatement stmt, CameraPointBean entity) { - stmt.clearBindings(); - - Long id = entity.getId(); - if (id != null) { - stmt.bindLong(1, id); - } - stmt.bindLong(2, entity.getStep()); - stmt.bindLong(3, entity.getHAngle()); - stmt.bindLong(4, entity.getVAngle()); - } - - @Override - public Long readKey(Cursor cursor, int offset) { - return cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0); - } - - @Override - public CameraPointBean readEntity(Cursor cursor, int offset) { - CameraPointBean entity = new CameraPointBean( // - cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id - cursor.getInt(offset + 1), // step - cursor.getInt(offset + 2), // hAngle - cursor.getInt(offset + 3) // vAngle - ); - return entity; - } - - @Override - public void readEntity(Cursor cursor, CameraPointBean entity, int offset) { - entity.setId(cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0)); - entity.setStep(cursor.getInt(offset + 1)); - entity.setHAngle(cursor.getInt(offset + 2)); - entity.setVAngle(cursor.getInt(offset + 3)); - } - - @Override - protected final Long updateKeyAfterInsert(CameraPointBean entity, long rowId) { - entity.setId(rowId); - return rowId; - } - - @Override - public Long getKey(CameraPointBean entity) { - if (entity != null) { - return entity.getId(); - } else { - return null; - } - } - - @Override - public boolean hasKey(CameraPointBean entity) { - return entity.getId() != null; - } - - @Override - protected final boolean isEntityUpdateable() { - return true; - } - -} diff --git a/app/src/main/java/com/casic/endoscope/greendao/DaoMaster.java b/app/src/main/java/com/casic/endoscope/greendao/DaoMaster.java index 5d4fa30..a455fd0 100644 --- a/app/src/main/java/com/casic/endoscope/greendao/DaoMaster.java +++ b/app/src/main/java/com/casic/endoscope/greendao/DaoMaster.java @@ -13,25 +13,20 @@ // THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. - /** * Master of DAO (schema version 1): knows all DAOs. */ public class DaoMaster extends AbstractDaoMaster { public static final int SCHEMA_VERSION = 1; - /** - * Creates underlying database table using DAOs. - */ + /** Creates underlying database table using DAOs. */ public static void createAllTables(Database db, boolean ifNotExists) { - CameraPointBeanDao.createTable(db, ifNotExists); + GasValueBeanDao.createTable(db, ifNotExists); } - /** - * Drops underlying database table using DAOs. - */ + /** Drops underlying database table using DAOs. */ public static void dropAllTables(Database db, boolean ifExists) { - CameraPointBeanDao.dropTable(db, ifExists); + GasValueBeanDao.dropTable(db, ifExists); } /** @@ -50,7 +45,7 @@ public DaoMaster(Database db) { super(db, SCHEMA_VERSION); - registerDaoClass(CameraPointBeanDao.class); + registerDaoClass(GasValueBeanDao.class); } public DaoSession newSession() { @@ -80,9 +75,7 @@ } } - /** - * WARNING: Drops all table on Upgrade! Use only during development. - */ + /** WARNING: Drops all table on Upgrade! Use only during development. */ public static class DevOpenHelper extends OpenHelper { public DevOpenHelper(Context context, String name) { super(context, name); diff --git a/app/src/main/java/com/casic/endoscope/greendao/DaoSession.java b/app/src/main/java/com/casic/endoscope/greendao/DaoSession.java index ed2f9c0..259243d 100644 --- a/app/src/main/java/com/casic/endoscope/greendao/DaoSession.java +++ b/app/src/main/java/com/casic/endoscope/greendao/DaoSession.java @@ -1,6 +1,6 @@ package com.casic.endoscope.greendao; -import com.casic.endoscope.bean.CameraPointBean; +import com.casic.endoscope.bean.GasValueBean; import org.greenrobot.greendao.AbstractDao; import org.greenrobot.greendao.AbstractDaoSession; @@ -19,28 +19,28 @@ */ public class DaoSession extends AbstractDaoSession { - private final DaoConfig cameraPointBeanDaoConfig; + private final DaoConfig gasValueBeanDaoConfig; - private final CameraPointBeanDao cameraPointBeanDao; + private final GasValueBeanDao gasValueBeanDao; public DaoSession(Database db, IdentityScopeType type, Map>, DaoConfig> daoConfigMap) { super(db); - cameraPointBeanDaoConfig = daoConfigMap.get(CameraPointBeanDao.class).clone(); - cameraPointBeanDaoConfig.initIdentityScope(type); + gasValueBeanDaoConfig = daoConfigMap.get(GasValueBeanDao.class).clone(); + gasValueBeanDaoConfig.initIdentityScope(type); - cameraPointBeanDao = new CameraPointBeanDao(cameraPointBeanDaoConfig, this); + gasValueBeanDao = new GasValueBeanDao(gasValueBeanDaoConfig, this); - registerDao(CameraPointBean.class, cameraPointBeanDao); + registerDao(GasValueBean.class, gasValueBeanDao); } public void clear() { - cameraPointBeanDaoConfig.clearIdentityScope(); + gasValueBeanDaoConfig.clearIdentityScope(); } - public CameraPointBeanDao getCameraPointBeanDao() { - return cameraPointBeanDao; + public GasValueBeanDao getGasValueBeanDao() { + return gasValueBeanDao; } } diff --git a/app/src/main/java/com/casic/endoscope/greendao/GasValueBeanDao.java b/app/src/main/java/com/casic/endoscope/greendao/GasValueBeanDao.java new file mode 100644 index 0000000..5149375 --- /dev/null +++ b/app/src/main/java/com/casic/endoscope/greendao/GasValueBeanDao.java @@ -0,0 +1,149 @@ +package com.casic.endoscope.greendao; + +import android.database.Cursor; +import android.database.sqlite.SQLiteStatement; + +import com.casic.endoscope.bean.GasValueBean; + +import org.greenrobot.greendao.AbstractDao; +import org.greenrobot.greendao.Property; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.database.DatabaseStatement; +import org.greenrobot.greendao.internal.DaoConfig; + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. +/** + * DAO for table "GAS_VALUE_BEAN". +*/ +public class GasValueBeanDao extends AbstractDao { + + public static final String TABLENAME = "GAS_VALUE_BEAN"; + + /** + * Properties of entity GasValueBean.
+ * Can be used for QueryBuilder and for referencing column names. + */ + public static class Properties { + public final static Property Id = new Property(0, Long.class, "id", true, "_id"); + public final static Property Time = new Property(1, String.class, "time", false, "TIME"); + public final static Property Value = new Property(2, int.class, "value", false, "VALUE"); + public final static Property Location = new Property(3, String.class, "location", false, "LOCATION"); + } + + + public GasValueBeanDao(DaoConfig config) { + super(config); + } + + public GasValueBeanDao(DaoConfig config, DaoSession daoSession) { + super(config, daoSession); + } + + /** Creates the underlying database table. */ + public static void createTable(Database db, boolean ifNotExists) { + String constraint = ifNotExists? "IF NOT EXISTS ": ""; + db.execSQL("CREATE TABLE " + constraint + "\"GAS_VALUE_BEAN\" (" + // + "\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id + "\"TIME\" TEXT," + // 1: time + "\"VALUE\" INTEGER NOT NULL ," + // 2: value + "\"LOCATION\" TEXT);"); // 3: location + } + + /** Drops the underlying database table. */ + public static void dropTable(Database db, boolean ifExists) { + String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"GAS_VALUE_BEAN\""; + db.execSQL(sql); + } + + @Override + protected final void bindValues(DatabaseStatement stmt, GasValueBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String time = entity.getTime(); + if (time != null) { + stmt.bindString(2, time); + } + stmt.bindLong(3, entity.getValue()); + + String location = entity.getLocation(); + if (location != null) { + stmt.bindString(4, location); + } + } + + @Override + protected final void bindValues(SQLiteStatement stmt, GasValueBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String time = entity.getTime(); + if (time != null) { + stmt.bindString(2, time); + } + stmt.bindLong(3, entity.getValue()); + + String location = entity.getLocation(); + if (location != null) { + stmt.bindString(4, location); + } + } + + @Override + public Long readKey(Cursor cursor, int offset) { + return cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0); + } + + @Override + public GasValueBean readEntity(Cursor cursor, int offset) { + GasValueBean entity = new GasValueBean( // + cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id + cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // time + cursor.getInt(offset + 2), // value + cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3) // location + ); + return entity; + } + + @Override + public void readEntity(Cursor cursor, GasValueBean entity, int offset) { + entity.setId(cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0)); + entity.setTime(cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1)); + entity.setValue(cursor.getInt(offset + 2)); + entity.setLocation(cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3)); + } + + @Override + protected final Long updateKeyAfterInsert(GasValueBean entity, long rowId) { + entity.setId(rowId); + return rowId; + } + + @Override + public Long getKey(GasValueBean entity) { + if(entity != null) { + return entity.getId(); + } else { + return null; + } + } + + @Override + public boolean hasKey(GasValueBean entity) { + return entity.getId() != null; + } + + @Override + protected final boolean isEntityUpdateable() { + return true; + } + +} diff --git a/app/src/main/java/com/casic/endoscope/utils/DataBaseManager.kt b/app/src/main/java/com/casic/endoscope/utils/DataBaseManager.kt index a593a5b..c683db1 100644 --- a/app/src/main/java/com/casic/endoscope/utils/DataBaseManager.kt +++ b/app/src/main/java/com/casic/endoscope/utils/DataBaseManager.kt @@ -1,8 +1,6 @@ package com.casic.endoscope.utils import com.casic.endoscope.base.BaseApplication -import com.casic.endoscope.bean.CameraPointBean -import com.casic.endoscope.greendao.CameraPointBeanDao class DataBaseManager private constructor() { @@ -13,31 +11,5 @@ } } - private var cameraPointDao = BaseApplication.get().getDaoSession().cameraPointBeanDao - - fun cacheCameraPoint(step: Int, h: Int, v: Int) { - val bean = CameraPointBean() - bean.step = step - bean.hAngle = h - bean.vAngle = v - cameraPointDao.insert(bean) - } - - fun deleteCameraPoints(beans: MutableList) { - beans.forEach { - cameraPointDao.delete(it) - } - } - - fun deleteAllCameraPoint() { - cameraPointDao.deleteAll() - } - - fun queryCameraPointById(id: Long): CameraPointBean { - return cameraPointDao.queryBuilder() - .where(CameraPointBeanDao.Properties.Id.eq(id)) - .unique() - } - - fun loadAllCameraPoint(): MutableList = cameraPointDao.loadAll() + private var gasValueBeanDao = BaseApplication.get().getDaoSession().gasValueBeanDao } \ No newline at end of file diff --git a/app/src/main/java/com/casic/endoscope/utils/EndoscopeDevOpenHelper.kt b/app/src/main/java/com/casic/endoscope/utils/EndoscopeDevOpenHelper.kt index 507b1ff..fd87f0f 100644 --- a/app/src/main/java/com/casic/endoscope/utils/EndoscopeDevOpenHelper.kt +++ b/app/src/main/java/com/casic/endoscope/utils/EndoscopeDevOpenHelper.kt @@ -2,8 +2,8 @@ import android.content.Context import android.database.sqlite.SQLiteDatabase.CursorFactory -import com.casic.endoscope.greendao.CameraPointBeanDao import com.casic.endoscope.greendao.DaoMaster +import com.casic.endoscope.greendao.GasValueBeanDao import com.github.yuweiguocn.library.greendao.MigrationHelper import com.github.yuweiguocn.library.greendao.MigrationHelper.ReCreateAllTableListener import org.greenrobot.greendao.database.Database @@ -22,7 +22,7 @@ DaoMaster.dropAllTables(db, ifExists) } }, - CameraPointBeanDao::class.java + GasValueBeanDao::class.java ) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/endoscope/view/MainActivity.kt b/app/src/main/java/com/casic/endoscope/view/MainActivity.kt index 0fe757e..c4509b0 100644 --- a/app/src/main/java/com/casic/endoscope/view/MainActivity.kt +++ b/app/src/main/java/com/casic/endoscope/view/MainActivity.kt @@ -15,8 +15,6 @@ import android.view.SurfaceHolder import android.view.View import androidx.lifecycle.lifecycleScope -import com.casic.endoscope.adapter.CameraPointAdapter -import com.casic.endoscope.bean.CameraPointBean import com.casic.endoscope.databinding.ActivityMainBinding import com.casic.endoscope.extensions.check import com.casic.endoscope.extensions.convertValue @@ -28,14 +26,12 @@ import com.casic.endoscope.extensions.init import com.casic.endoscope.extensions.toTime import com.casic.endoscope.service.VideoTranscodeService -import com.casic.endoscope.utils.DataBaseManager import com.casic.endoscope.utils.ProjectConstant import com.casic.endoscope.utils.ble.BleDeviceManager import com.casic.endoscope.utils.ble.OnDeviceConnectListener import com.casic.endoscope.utils.ble.OnDeviceDiscoveredListener import com.casic.endoscope.utils.hk.MessageCodeHub import com.casic.endoscope.utils.hk.SDKGuider -import com.casic.endoscope.widgets.AddCameraPointDialog import com.casic.endoscope.widgets.BluetoothDeviceDialog import com.casic.endoscope.widgets.LineChartMarkerView import com.github.mikephil.charting.data.Entry @@ -55,10 +51,8 @@ import com.pengxh.kt.lite.extensions.timestampToTime import com.pengxh.kt.lite.utils.LoadingDialogHub import com.pengxh.kt.lite.utils.WeakReferenceHandler -import com.pengxh.kt.lite.widget.SteeringWheelView import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch -import kotlinx.coroutines.withContext import java.text.SimpleDateFormat import java.util.Date import java.util.Locale @@ -101,17 +95,11 @@ //焦距按钮是否已松开 private var isScaleButtonUp = true - //是否拍照成功 - private var isCaptureSuccess = true - private var timer: Timer? = null private var timerTask: TimerTask? = null private var seconds = 0L - private var dataBeans: MutableList = ArrayList() - private var selectedItems: MutableList = ArrayList() private var inputVideoPath = "" private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var dataAdapter: CameraPointAdapter private lateinit var serviceIntent: Intent private lateinit var dataSet: LineDataSet private lateinit var lineData: LineData @@ -123,8 +111,6 @@ override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) - dataBeans = DataBaseManager.get.loadAllCameraPoint() - //显示数据 weakReferenceHandler.sendEmptyMessage(messageCode) @@ -147,13 +133,7 @@ override fun handleMessage(msg: Message): Boolean { if (msg.what == messageCode) { //绑定数据 - dataAdapter = CameraPointAdapter(this, dataBeans) - binding.recyclerView.adapter = dataAdapter - dataAdapter.setOnItemCheckedListener(object : CameraPointAdapter.OnItemCheckedListener { - override fun onItemChecked(position: Int, items: ArrayList) { - selectedItems = items - } - }) + } return true } @@ -209,6 +189,180 @@ } } + binding.upScaleButton.setOnTouchListener { _, event -> + when (event.action) { + MotionEvent.ACTION_DOWN -> { + if (isPreviewSuccess && isScaleButtonUp) { + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_IN, 0) + isScaleButtonUp = false + } + } + + MotionEvent.ACTION_UP -> { + isScaleButtonUp = true + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_IN, 1) + } + } + false + } + + binding.downScaleButton.setOnTouchListener { _, event -> + when (event.action) { + MotionEvent.ACTION_DOWN -> { + if (isPreviewSuccess && isScaleButtonUp) { + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_OUT, 0) + isScaleButtonUp = false + } + } + + MotionEvent.ACTION_UP -> { + isScaleButtonUp = true + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_OUT, 1) + } + } + false + } + + binding.topButton.setOnTouchListener { _, motionEvent -> + when (motionEvent.action) { + MotionEvent.ACTION_DOWN -> { + if (isPreviewSuccess && isActionUp) { + hkSDK.NET_DVR_PTZControlWithSpeed( + previewHandle, PTZCommand.TILT_UP, 0, selectedSpeed + ) + isActionUp = false + } + } + + MotionEvent.ACTION_UP -> { + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.TILT_UP, 1) + isActionUp = true + } + } + false + } + + binding.centerButton.setOnClickListener { + if (!isPreviewSuccess) { + val deviceItem = SDKGuider.sdkGuider.devManageGuider.DeviceItem() + deviceItem.szDevName = "" + deviceItem.devNetInfo = SDKGuider.sdkGuider.devManageGuider.DevNetInfo( + ProjectConstant.HK_NET_IP, + ProjectConstant.HK_NET_PORT, + ProjectConstant.HK_NET_USERNAME, + ProjectConstant.HK_NET_PASSWORD + ) + if (deviceItem.szDevName.isEmpty()) { + deviceItem.szDevName = deviceItem.devNetInfo.szIp + } + val loginV40Jna = SDKGuider.sdkGuider.devManageGuider.login_v40_jna( + deviceItem.szDevName, deviceItem.devNetInfo + ) + if (loginV40Jna) { + //配置设备通道 + try { + val deviceInfo = SDKGuider.sdkGuider.devManageGuider.devList[0] + returnUserId = deviceInfo.szUserId + + aChannelNum = + deviceInfo.deviceInfoV40_jna.struDeviceV30.byChanNum.toInt() + startAChannel = + deviceInfo.deviceInfoV40_jna.struDeviceV30.byStartChan.toInt() + + dChannelNum = + deviceInfo.deviceInfoV40_jna.struDeviceV30.byIPChanNum + deviceInfo.deviceInfoV40_jna.struDeviceV30.byHighDChanNum * 256 + startDChannel = + deviceInfo.deviceInfoV40_jna.struDeviceV30.byStartChan.toInt() + + var iAnalogStartChan = startAChannel + var iDigitalStartChan = startDChannel + + val channelList = ArrayList() + + for (i in 0 until aChannelNum) { + channelList.add("ACamera_$iAnalogStartChan") + iAnalogStartChan++ + } + + for (i in 0 until dChannelNum) { + channelList.add("DCamera_$iDigitalStartChan") + iDigitalStartChan++ + } + selectChannel = Integer.valueOf(channelList[0].getChannel()) + + val streamList = ArrayList() + streamList.add("main_stream") + streamList.add("sub_stream") + streamList.add("third_stream") + + //开始预览 + if (previewHandle != -1) { + SDKGuider.sdkGuider.devPreviewGuider.RealPlay_Stop_jni(previewHandle) + } + val strutPlayInfo = NET_DVR_PREVIEWINFO() + strutPlayInfo.lChannel = selectChannel + strutPlayInfo.dwStreamType = 1 + strutPlayInfo.bBlocked = 1 + strutPlayInfo.hHwnd = binding.surfaceView.holder + previewHandle = SDKGuider.sdkGuider.devPreviewGuider.RealPlay_V40_jni( + returnUserId, strutPlayInfo, null + ) + if (previewHandle < 0) { + Log.d(kTag, "initEvent: Err:${MessageCodeHub.getErrorCode()}") + return@setOnClickListener + } + isPreviewSuccess = true + "预览开启成功".show(context) + //开始计时 + timer = Timer() + timerTask = object : TimerTask() { + override fun run() { + seconds++ + lifecycleScope.launch(Dispatchers.Main) { + binding.runningTimeView.text = seconds.toTime() + } + } + } + timer?.schedule(timerTask, 0, 1000) + } catch (e: IndexOutOfBoundsException) { + e.printStackTrace() + "设备未正常连接,无法开启预览".show(context) + } + } else { + "设备登陆失败".show(context) + } + } else { + if (!SDKGuider.sdkGuider.devPreviewGuider.RealPlay_Stop_jni(previewHandle)) { + return@setOnClickListener + } + previewHandle = -1 + isPreviewSuccess = false + "预览关闭成功".show(context) + //停止计时 + timerTask?.cancel() + timer?.cancel() + } + } + + binding.bottomButton.setOnTouchListener { _, motionEvent -> + when (motionEvent.action) { + MotionEvent.ACTION_DOWN -> { + if (isPreviewSuccess && isActionUp) { + hkSDK.NET_DVR_PTZControlWithSpeed( + previewHandle, PTZCommand.TILT_DOWN, 0, selectedSpeed + ) + isActionUp = false + } + } + + MotionEvent.ACTION_UP -> { + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.TILT_DOWN, 1) + isActionUp = true + } + } + false + } + //单张拍照 binding.imageButton.setOnClickListener { if (isPreviewSuccess) { @@ -252,278 +406,8 @@ true } - //连续拍照 - binding.multipleImageButton.setOnClickListener { - if (dataBeans.isEmpty()) { - "请先设置连续拍照步骤".show(this) - return@setOnClickListener - } - if (isPreviewSuccess) { - lifecycleScope.launch(Dispatchers.IO) { - dataBeans.forEach { - //再拍照 - if (isCaptureSuccess) { - isCaptureSuccess = false - - //先执行角度 - executeAngle(it.hAngle, it.vAngle) - - withContext(Dispatchers.Main) { - "抓取步骤${it.step}画面".show(context) - } - - val strJpeg = NET_DVR_JPEGPARA() - strJpeg.wPicQuality = 1 - strJpeg.wPicSize = 2 - - val imagePath = - "/${createImageFileDir()}/${timeFormat.format(Date())}.png" - hkSDK.NET_DVR_CaptureJPEGPicture( - returnUserId, selectChannel, strJpeg, imagePath - ) - - isCaptureSuccess = MessageCodeHub.getErrorCode() == 0 - } - } - withContext(Dispatchers.Main) { - "连续抓取画面完成".show(context) - } - } - } else { - "摄像头预览未打开,无法拍照".show(this) - } - } - - binding.addButton.setOnClickListener { - val step = if (dataBeans.isEmpty()) { - 0 - } else { - dataBeans.last().step - } - AddCameraPointDialog.Builder().setContext(this).setLastStep(step) - .setNegativeButton("取消").setPositiveButton("添加") - .setOnDialogButtonClickListener(object : - AddCameraPointDialog.OnDialogButtonClickListener { - override fun onConfirmClick(step: Int, hAngle: Int, vAngle: Int) { - DataBaseManager.get.cacheCameraPoint(step, hAngle, vAngle) - dataBeans = DataBaseManager.get.loadAllCameraPoint() - dataAdapter.setRefreshData(dataBeans) - } - - override fun onCancelClick() { - - } - }).build().show() - } - - binding.deleteButton.setOnClickListener { - if (selectedItems.isEmpty()) { - "请先选择要删除的步骤".show(this) - return@setOnClickListener - } - DataBaseManager.get.deleteCameraPoints(selectedItems) - dataBeans = DataBaseManager.get.loadAllCameraPoint() - dataAdapter.setRefreshData(dataBeans) - selectedItems.clear() - } - - binding.steeringWheelView.setOnWheelTouchListener(object : - SteeringWheelView.OnWheelTouchListener { - override fun onCenterClicked() { - if (!isPreviewSuccess) { - val deviceItem = SDKGuider.sdkGuider.devManageGuider.DeviceItem() - deviceItem.szDevName = "" - deviceItem.devNetInfo = SDKGuider.sdkGuider.devManageGuider.DevNetInfo( - ProjectConstant.HK_NET_IP, - ProjectConstant.HK_NET_PORT, - ProjectConstant.HK_NET_USERNAME, - ProjectConstant.HK_NET_PASSWORD - ) - if (deviceItem.szDevName.isEmpty()) { - deviceItem.szDevName = deviceItem.devNetInfo.szIp - } - val loginV40Jna = SDKGuider.sdkGuider.devManageGuider.login_v40_jna( - deviceItem.szDevName, deviceItem.devNetInfo - ) - if (loginV40Jna) { - //配置设备通道 - try { - val deviceInfo = SDKGuider.sdkGuider.devManageGuider.devList[0] - returnUserId = deviceInfo.szUserId - - aChannelNum = - deviceInfo.deviceInfoV40_jna.struDeviceV30.byChanNum.toInt() - startAChannel = - deviceInfo.deviceInfoV40_jna.struDeviceV30.byStartChan.toInt() - - dChannelNum = - deviceInfo.deviceInfoV40_jna.struDeviceV30.byIPChanNum + deviceInfo.deviceInfoV40_jna.struDeviceV30.byHighDChanNum * 256 - startDChannel = - deviceInfo.deviceInfoV40_jna.struDeviceV30.byStartChan.toInt() - - var iAnalogStartChan = startAChannel - var iDigitalStartChan = startDChannel - - val channelList = ArrayList() - - for (i in 0 until aChannelNum) { - channelList.add("ACamera_$iAnalogStartChan") - iAnalogStartChan++ - } - - for (i in 0 until dChannelNum) { - channelList.add("DCamera_$iDigitalStartChan") - iDigitalStartChan++ - } - selectChannel = Integer.valueOf(channelList[0].getChannel()) - - val streamList = ArrayList() - streamList.add("main_stream") - streamList.add("sub_stream") - streamList.add("third_stream") - - //开始预览 - if (previewHandle != -1) { - SDKGuider.sdkGuider.devPreviewGuider.RealPlay_Stop_jni(previewHandle) - } - val strutPlayInfo = NET_DVR_PREVIEWINFO() - strutPlayInfo.lChannel = selectChannel - strutPlayInfo.dwStreamType = 1 - strutPlayInfo.bBlocked = 1 - strutPlayInfo.hHwnd = binding.surfaceView.holder - previewHandle = SDKGuider.sdkGuider.devPreviewGuider.RealPlay_V40_jni( - returnUserId, strutPlayInfo, null - ) - if (previewHandle < 0) { - Log.d(kTag, "initEvent: Err:${MessageCodeHub.getErrorCode()}") - return - } - isPreviewSuccess = true - "预览开启成功".show(context) - //开始计时 - timer = Timer() - timerTask = object : TimerTask() { - override fun run() { - seconds++ - lifecycleScope.launch(Dispatchers.Main) { - binding.runningTimeView.text = seconds.toTime() - } - } - } - timer?.schedule(timerTask, 0, 1000) - } catch (e: IndexOutOfBoundsException) { - e.printStackTrace() - "设备未正常连接,无法开启预览".show(context) - } - } else { - "设备登陆失败".show(context) - } - } else { - if (!SDKGuider.sdkGuider.devPreviewGuider.RealPlay_Stop_jni(previewHandle)) { - return - } - previewHandle = -1 - isPreviewSuccess = false - "预览关闭成功".show(context) - //停止计时 - timerTask?.cancel() - timer?.cancel() - } - } - - override fun onLeftTurn() { - if (isPreviewSuccess && isActionUp) { - hkSDK.NET_DVR_PTZControlWithSpeed( - previewHandle, PTZCommand.PAN_LEFT, 0, selectedSpeed - ) - isActionUp = false - } - } - - override fun onTopTurn() { - if (isPreviewSuccess && isActionUp) { - hkSDK.NET_DVR_PTZControlWithSpeed( - previewHandle, PTZCommand.TILT_UP, 0, selectedSpeed - ) - isActionUp = false - } - } - - override fun onRightTurn() { - if (isPreviewSuccess && isActionUp) { - hkSDK.NET_DVR_PTZControlWithSpeed( - previewHandle, PTZCommand.PAN_RIGHT, 0, selectedSpeed - ) - isActionUp = false - } - } - - override fun onBottomTurn() { - if (isPreviewSuccess && isActionUp) { - hkSDK.NET_DVR_PTZControlWithSpeed( - previewHandle, PTZCommand.TILT_DOWN, 0, selectedSpeed - ) - isActionUp = false - } - } - - override fun onActionTurnUp(dir: SteeringWheelView.Direction) { - when (dir) { - SteeringWheelView.Direction.LEFT -> { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.PAN_LEFT, 1) - isActionUp = true - } - - SteeringWheelView.Direction.TOP -> { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.TILT_UP, 1) - isActionUp = true - } - - SteeringWheelView.Direction.RIGHT -> { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.PAN_RIGHT, 1) - isActionUp = true - } - - SteeringWheelView.Direction.BOTTOM -> { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.TILT_DOWN, 1) - isActionUp = true - } - } - } - }) - - binding.upScaleButton.setOnTouchListener { _, event -> - when (event.action) { - MotionEvent.ACTION_DOWN -> { - if (isPreviewSuccess && isScaleButtonUp) { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_IN, 0) - isScaleButtonUp = false - } - } - - MotionEvent.ACTION_UP -> { - isScaleButtonUp = true - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_IN, 1) - } - } - false - } - - binding.downScaleButton.setOnTouchListener { _, event -> - when (event.action) { - MotionEvent.ACTION_DOWN -> { - if (isPreviewSuccess && isScaleButtonUp) { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_OUT, 0) - isScaleButtonUp = false - } - } - - MotionEvent.ACTION_UP -> { - isScaleButtonUp = true - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_OUT, 1) - } - } - false + binding.resetButton.setOnClickListener { + executeAngle(0, 0) } } diff --git a/app/src/main/res/drawable/bg_solid_layout_blue_10.xml b/app/src/main/res/drawable/bg_solid_layout_blue_10.xml new file mode 100644 index 0000000..b7e06e3 --- /dev/null +++ b/app/src/main/res/drawable/bg_solid_layout_blue_10.xml @@ -0,0 +1,7 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_stroke_layout_blue_10.xml b/app/src/main/res/drawable/bg_stroke_layout_blue_10.xml deleted file mode 100644 index d6f55c9..0000000 --- a/app/src/main/res/drawable/bg_stroke_layout_blue_10.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_camera.xml b/app/src/main/res/drawable/ic_camera.xml new file mode 100644 index 0000000..1f7ab22 --- /dev/null +++ b/app/src/main/res/drawable/ic_camera.xml @@ -0,0 +1,15 @@ + + + + + diff --git a/app/src/main/res/drawable/ic_dir_down.xml b/app/src/main/res/drawable/ic_dir_down.xml deleted file mode 100644 index e6807dc..0000000 --- a/app/src/main/res/drawable/ic_dir_down.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_dir_left.xml b/app/src/main/res/drawable/ic_dir_left.xml deleted file mode 100644 index 12b2237..0000000 --- a/app/src/main/res/drawable/ic_dir_left.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_dir_right.xml b/app/src/main/res/drawable/ic_dir_right.xml deleted file mode 100644 index 96539aa..0000000 --- a/app/src/main/res/drawable/ic_dir_right.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_dir_up.xml b/app/src/main/res/drawable/ic_dir_up.xml deleted file mode 100644 index e7a153e..0000000 --- a/app/src/main/res/drawable/ic_dir_up.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_down.xml b/app/src/main/res/drawable/ic_down.xml new file mode 100644 index 0000000..9fcd974 --- /dev/null +++ b/app/src/main/res/drawable/ic_down.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_minus.xml b/app/src/main/res/drawable/ic_minus.xml index a399f5f..2942b80 100644 --- a/app/src/main/res/drawable/ic_minus.xml +++ b/app/src/main/res/drawable/ic_minus.xml @@ -1,9 +1,9 @@ + android:fillColor="#1875F0" + android:pathData="M864,480H160c-17.6,0 -32,14.4 -32,32s14.4,32 32,32h704c17.6,0 32,-14.4 32,-32s-14.4,-32 -32,-32z" /> diff --git a/app/src/main/res/drawable/ic_off.xml b/app/src/main/res/drawable/ic_off.xml new file mode 100644 index 0000000..1940f16 --- /dev/null +++ b/app/src/main/res/drawable/ic_off.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/build.gradle b/app/build.gradle index c2a2c53..64d4d0c 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -72,7 +72,7 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5.4' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.8' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.cardview:cardview:1.0.0' diff --git a/app/src/main/java/com/casic/endoscope/adapter/CameraPointAdapter.kt b/app/src/main/java/com/casic/endoscope/adapter/CameraPointAdapter.kt deleted file mode 100644 index fe404b2..0000000 --- a/app/src/main/java/com/casic/endoscope/adapter/CameraPointAdapter.kt +++ /dev/null @@ -1,78 +0,0 @@ -package com.casic.endoscope.adapter - -import android.annotation.SuppressLint -import android.content.Context -import android.graphics.Color -import android.view.LayoutInflater -import android.view.ViewGroup -import android.widget.LinearLayout -import androidx.recyclerview.widget.RecyclerView -import com.casic.endoscope.R -import com.casic.endoscope.bean.CameraPointBean -import com.pengxh.kt.lite.adapter.ViewHolder -import com.pengxh.kt.lite.extensions.convertColor - -class CameraPointAdapter( - private val context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var multipleSelected = mutableSetOf() - private var selectedItems = ArrayList() - - override fun getItemCount(): Int = dataRows.size - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { - return ViewHolder( - LayoutInflater.from(context).inflate(R.layout.item_point_list_rv, parent, false) - ) - } - - @SuppressLint("NotifyDataSetChanged") - fun setRefreshData(dataRows: MutableList) { - this.dataRows.clear() - this.dataRows.addAll(dataRows) - notifyDataSetChanged() - multipleSelected.clear() - selectedItems.clear() - } - - override fun onBindViewHolder(holder: ViewHolder, position: Int) { - val item = dataRows[position] - holder.setText(R.id.stepNameView, "步骤 ${item.step}") - .setText(R.id.hAngleView, "水平角度 ${item.hAngle}°") - .setText(R.id.vAngleView, "垂直角度 ${item.vAngle}°") - - val linearLayout = holder.itemView.findViewById(R.id.rootView) - //item背景色 - if (position % 2 == 0) { - linearLayout.setBackgroundColor(Color.parseColor("#C8E3F4")) - } else { - linearLayout.setBackgroundColor(R.color.backgroundColor.convertColor(context)) - } - - holder.itemView.isSelected = multipleSelected.contains(position) - holder.itemView.setOnClickListener { - if (multipleSelected.contains(position)) { - multipleSelected.remove(position) - selectedItems.remove(dataRows[position]) - holder.itemView.isSelected = false - } else { - multipleSelected.add(position) - selectedItems.add(dataRows[position]) - holder.itemView.isSelected = true - } - - itemCheckedListener?.onItemChecked(position, selectedItems) - } - } - - private var itemCheckedListener: OnItemCheckedListener? = null - - interface OnItemCheckedListener { - fun onItemChecked(position: Int, items: ArrayList) - } - - fun setOnItemCheckedListener(listener: OnItemCheckedListener) { - itemCheckedListener = listener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/endoscope/bean/CameraPointBean.java b/app/src/main/java/com/casic/endoscope/bean/CameraPointBean.java deleted file mode 100644 index 3a20d82..0000000 --- a/app/src/main/java/com/casic/endoscope/bean/CameraPointBean.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.casic.endoscope.bean; - -import org.greenrobot.greendao.annotation.Entity; -import org.greenrobot.greendao.annotation.Generated; -import org.greenrobot.greendao.annotation.Id; - -/** - * 必须是java,不能是kt - */ -@Entity -public class CameraPointBean { - - @Id(autoincrement = true) - private Long id;//主键自增 - - private int step;//步骤序号 - private int hAngle;//水平角度 - private int vAngle;//垂直角度 - - @Generated(hash = 1436018650) - public CameraPointBean(Long id, int step, int hAngle, int vAngle) { - this.id = id; - this.step = step; - this.hAngle = hAngle; - this.vAngle = vAngle; - } - - @Generated(hash = 44086073) - public CameraPointBean() { - } - - public Long getId() { - return this.id; - } - - public void setId(Long id) { - this.id = id; - } - - public int getStep() { - return this.step; - } - - public void setStep(int step) { - this.step = step; - } - - public int getHAngle() { - return this.hAngle; - } - - public void setHAngle(int hAngle) { - this.hAngle = hAngle; - } - - public int getVAngle() { - return this.vAngle; - } - - public void setVAngle(int vAngle) { - this.vAngle = vAngle; - } -} diff --git a/app/src/main/java/com/casic/endoscope/bean/GasValueBean.java b/app/src/main/java/com/casic/endoscope/bean/GasValueBean.java new file mode 100644 index 0000000..6537b9a --- /dev/null +++ b/app/src/main/java/com/casic/endoscope/bean/GasValueBean.java @@ -0,0 +1,63 @@ +package com.casic.endoscope.bean; + +import org.greenrobot.greendao.annotation.Entity; +import org.greenrobot.greendao.annotation.Generated; +import org.greenrobot.greendao.annotation.Id; + +/** + * 必须是java,不能是kt + * 甲烷浓度表结构 + */ +@Entity +public class GasValueBean { + @Id(autoincrement = true) + private Long id;//主键自增 + + private String time;//采集浓度的时间 + private int value;//采集的浓度 + private String location;//浓度采集点位置 + + @Generated(hash = 663679791) + public GasValueBean(Long id, String time, int value, String location) { + this.id = id; + this.time = time; + this.value = value; + this.location = location; + } + + @Generated(hash = 291409217) + public GasValueBean() { + } + + public Long getId() { + return this.id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getTime() { + return this.time; + } + + public void setTime(String time) { + this.time = time; + } + + public int getValue() { + return this.value; + } + + public void setValue(int value) { + this.value = value; + } + + public String getLocation() { + return this.location; + } + + public void setLocation(String location) { + this.location = location; + } +} diff --git a/app/src/main/java/com/casic/endoscope/greendao/CameraPointBeanDao.java b/app/src/main/java/com/casic/endoscope/greendao/CameraPointBeanDao.java deleted file mode 100644 index 11bc932..0000000 --- a/app/src/main/java/com/casic/endoscope/greendao/CameraPointBeanDao.java +++ /dev/null @@ -1,138 +0,0 @@ -package com.casic.endoscope.greendao; - -import android.database.Cursor; -import android.database.sqlite.SQLiteStatement; - -import com.casic.endoscope.bean.CameraPointBean; - -import org.greenrobot.greendao.AbstractDao; -import org.greenrobot.greendao.Property; -import org.greenrobot.greendao.database.Database; -import org.greenrobot.greendao.database.DatabaseStatement; -import org.greenrobot.greendao.internal.DaoConfig; - -// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. - -/** - * DAO for table "CAMERA_POINT_BEAN". - */ -public class CameraPointBeanDao extends AbstractDao { - - public static final String TABLENAME = "CAMERA_POINT_BEAN"; - - /** - * Properties of entity CameraPointBean.
- * Can be used for QueryBuilder and for referencing column names. - */ - public static class Properties { - public final static Property Id = new Property(0, Long.class, "id", true, "_id"); - public final static Property Step = new Property(1, int.class, "step", false, "STEP"); - public final static Property HAngle = new Property(2, int.class, "hAngle", false, "H_ANGLE"); - public final static Property VAngle = new Property(3, int.class, "vAngle", false, "V_ANGLE"); - } - - - public CameraPointBeanDao(DaoConfig config) { - super(config); - } - - public CameraPointBeanDao(DaoConfig config, DaoSession daoSession) { - super(config, daoSession); - } - - /** - * Creates the underlying database table. - */ - public static void createTable(Database db, boolean ifNotExists) { - String constraint = ifNotExists ? "IF NOT EXISTS " : ""; - db.execSQL("CREATE TABLE " + constraint + "\"CAMERA_POINT_BEAN\" (" + // - "\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id - "\"STEP\" INTEGER NOT NULL ," + // 1: step - "\"H_ANGLE\" INTEGER NOT NULL ," + // 2: hAngle - "\"V_ANGLE\" INTEGER NOT NULL );"); // 3: vAngle - } - - /** - * Drops the underlying database table. - */ - public static void dropTable(Database db, boolean ifExists) { - String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"CAMERA_POINT_BEAN\""; - db.execSQL(sql); - } - - @Override - protected final void bindValues(DatabaseStatement stmt, CameraPointBean entity) { - stmt.clearBindings(); - - Long id = entity.getId(); - if (id != null) { - stmt.bindLong(1, id); - } - stmt.bindLong(2, entity.getStep()); - stmt.bindLong(3, entity.getHAngle()); - stmt.bindLong(4, entity.getVAngle()); - } - - @Override - protected final void bindValues(SQLiteStatement stmt, CameraPointBean entity) { - stmt.clearBindings(); - - Long id = entity.getId(); - if (id != null) { - stmt.bindLong(1, id); - } - stmt.bindLong(2, entity.getStep()); - stmt.bindLong(3, entity.getHAngle()); - stmt.bindLong(4, entity.getVAngle()); - } - - @Override - public Long readKey(Cursor cursor, int offset) { - return cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0); - } - - @Override - public CameraPointBean readEntity(Cursor cursor, int offset) { - CameraPointBean entity = new CameraPointBean( // - cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id - cursor.getInt(offset + 1), // step - cursor.getInt(offset + 2), // hAngle - cursor.getInt(offset + 3) // vAngle - ); - return entity; - } - - @Override - public void readEntity(Cursor cursor, CameraPointBean entity, int offset) { - entity.setId(cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0)); - entity.setStep(cursor.getInt(offset + 1)); - entity.setHAngle(cursor.getInt(offset + 2)); - entity.setVAngle(cursor.getInt(offset + 3)); - } - - @Override - protected final Long updateKeyAfterInsert(CameraPointBean entity, long rowId) { - entity.setId(rowId); - return rowId; - } - - @Override - public Long getKey(CameraPointBean entity) { - if (entity != null) { - return entity.getId(); - } else { - return null; - } - } - - @Override - public boolean hasKey(CameraPointBean entity) { - return entity.getId() != null; - } - - @Override - protected final boolean isEntityUpdateable() { - return true; - } - -} diff --git a/app/src/main/java/com/casic/endoscope/greendao/DaoMaster.java b/app/src/main/java/com/casic/endoscope/greendao/DaoMaster.java index 5d4fa30..a455fd0 100644 --- a/app/src/main/java/com/casic/endoscope/greendao/DaoMaster.java +++ b/app/src/main/java/com/casic/endoscope/greendao/DaoMaster.java @@ -13,25 +13,20 @@ // THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. - /** * Master of DAO (schema version 1): knows all DAOs. */ public class DaoMaster extends AbstractDaoMaster { public static final int SCHEMA_VERSION = 1; - /** - * Creates underlying database table using DAOs. - */ + /** Creates underlying database table using DAOs. */ public static void createAllTables(Database db, boolean ifNotExists) { - CameraPointBeanDao.createTable(db, ifNotExists); + GasValueBeanDao.createTable(db, ifNotExists); } - /** - * Drops underlying database table using DAOs. - */ + /** Drops underlying database table using DAOs. */ public static void dropAllTables(Database db, boolean ifExists) { - CameraPointBeanDao.dropTable(db, ifExists); + GasValueBeanDao.dropTable(db, ifExists); } /** @@ -50,7 +45,7 @@ public DaoMaster(Database db) { super(db, SCHEMA_VERSION); - registerDaoClass(CameraPointBeanDao.class); + registerDaoClass(GasValueBeanDao.class); } public DaoSession newSession() { @@ -80,9 +75,7 @@ } } - /** - * WARNING: Drops all table on Upgrade! Use only during development. - */ + /** WARNING: Drops all table on Upgrade! Use only during development. */ public static class DevOpenHelper extends OpenHelper { public DevOpenHelper(Context context, String name) { super(context, name); diff --git a/app/src/main/java/com/casic/endoscope/greendao/DaoSession.java b/app/src/main/java/com/casic/endoscope/greendao/DaoSession.java index ed2f9c0..259243d 100644 --- a/app/src/main/java/com/casic/endoscope/greendao/DaoSession.java +++ b/app/src/main/java/com/casic/endoscope/greendao/DaoSession.java @@ -1,6 +1,6 @@ package com.casic.endoscope.greendao; -import com.casic.endoscope.bean.CameraPointBean; +import com.casic.endoscope.bean.GasValueBean; import org.greenrobot.greendao.AbstractDao; import org.greenrobot.greendao.AbstractDaoSession; @@ -19,28 +19,28 @@ */ public class DaoSession extends AbstractDaoSession { - private final DaoConfig cameraPointBeanDaoConfig; + private final DaoConfig gasValueBeanDaoConfig; - private final CameraPointBeanDao cameraPointBeanDao; + private final GasValueBeanDao gasValueBeanDao; public DaoSession(Database db, IdentityScopeType type, Map>, DaoConfig> daoConfigMap) { super(db); - cameraPointBeanDaoConfig = daoConfigMap.get(CameraPointBeanDao.class).clone(); - cameraPointBeanDaoConfig.initIdentityScope(type); + gasValueBeanDaoConfig = daoConfigMap.get(GasValueBeanDao.class).clone(); + gasValueBeanDaoConfig.initIdentityScope(type); - cameraPointBeanDao = new CameraPointBeanDao(cameraPointBeanDaoConfig, this); + gasValueBeanDao = new GasValueBeanDao(gasValueBeanDaoConfig, this); - registerDao(CameraPointBean.class, cameraPointBeanDao); + registerDao(GasValueBean.class, gasValueBeanDao); } public void clear() { - cameraPointBeanDaoConfig.clearIdentityScope(); + gasValueBeanDaoConfig.clearIdentityScope(); } - public CameraPointBeanDao getCameraPointBeanDao() { - return cameraPointBeanDao; + public GasValueBeanDao getGasValueBeanDao() { + return gasValueBeanDao; } } diff --git a/app/src/main/java/com/casic/endoscope/greendao/GasValueBeanDao.java b/app/src/main/java/com/casic/endoscope/greendao/GasValueBeanDao.java new file mode 100644 index 0000000..5149375 --- /dev/null +++ b/app/src/main/java/com/casic/endoscope/greendao/GasValueBeanDao.java @@ -0,0 +1,149 @@ +package com.casic.endoscope.greendao; + +import android.database.Cursor; +import android.database.sqlite.SQLiteStatement; + +import com.casic.endoscope.bean.GasValueBean; + +import org.greenrobot.greendao.AbstractDao; +import org.greenrobot.greendao.Property; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.database.DatabaseStatement; +import org.greenrobot.greendao.internal.DaoConfig; + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. +/** + * DAO for table "GAS_VALUE_BEAN". +*/ +public class GasValueBeanDao extends AbstractDao { + + public static final String TABLENAME = "GAS_VALUE_BEAN"; + + /** + * Properties of entity GasValueBean.
+ * Can be used for QueryBuilder and for referencing column names. + */ + public static class Properties { + public final static Property Id = new Property(0, Long.class, "id", true, "_id"); + public final static Property Time = new Property(1, String.class, "time", false, "TIME"); + public final static Property Value = new Property(2, int.class, "value", false, "VALUE"); + public final static Property Location = new Property(3, String.class, "location", false, "LOCATION"); + } + + + public GasValueBeanDao(DaoConfig config) { + super(config); + } + + public GasValueBeanDao(DaoConfig config, DaoSession daoSession) { + super(config, daoSession); + } + + /** Creates the underlying database table. */ + public static void createTable(Database db, boolean ifNotExists) { + String constraint = ifNotExists? "IF NOT EXISTS ": ""; + db.execSQL("CREATE TABLE " + constraint + "\"GAS_VALUE_BEAN\" (" + // + "\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id + "\"TIME\" TEXT," + // 1: time + "\"VALUE\" INTEGER NOT NULL ," + // 2: value + "\"LOCATION\" TEXT);"); // 3: location + } + + /** Drops the underlying database table. */ + public static void dropTable(Database db, boolean ifExists) { + String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"GAS_VALUE_BEAN\""; + db.execSQL(sql); + } + + @Override + protected final void bindValues(DatabaseStatement stmt, GasValueBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String time = entity.getTime(); + if (time != null) { + stmt.bindString(2, time); + } + stmt.bindLong(3, entity.getValue()); + + String location = entity.getLocation(); + if (location != null) { + stmt.bindString(4, location); + } + } + + @Override + protected final void bindValues(SQLiteStatement stmt, GasValueBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String time = entity.getTime(); + if (time != null) { + stmt.bindString(2, time); + } + stmt.bindLong(3, entity.getValue()); + + String location = entity.getLocation(); + if (location != null) { + stmt.bindString(4, location); + } + } + + @Override + public Long readKey(Cursor cursor, int offset) { + return cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0); + } + + @Override + public GasValueBean readEntity(Cursor cursor, int offset) { + GasValueBean entity = new GasValueBean( // + cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id + cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // time + cursor.getInt(offset + 2), // value + cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3) // location + ); + return entity; + } + + @Override + public void readEntity(Cursor cursor, GasValueBean entity, int offset) { + entity.setId(cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0)); + entity.setTime(cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1)); + entity.setValue(cursor.getInt(offset + 2)); + entity.setLocation(cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3)); + } + + @Override + protected final Long updateKeyAfterInsert(GasValueBean entity, long rowId) { + entity.setId(rowId); + return rowId; + } + + @Override + public Long getKey(GasValueBean entity) { + if(entity != null) { + return entity.getId(); + } else { + return null; + } + } + + @Override + public boolean hasKey(GasValueBean entity) { + return entity.getId() != null; + } + + @Override + protected final boolean isEntityUpdateable() { + return true; + } + +} diff --git a/app/src/main/java/com/casic/endoscope/utils/DataBaseManager.kt b/app/src/main/java/com/casic/endoscope/utils/DataBaseManager.kt index a593a5b..c683db1 100644 --- a/app/src/main/java/com/casic/endoscope/utils/DataBaseManager.kt +++ b/app/src/main/java/com/casic/endoscope/utils/DataBaseManager.kt @@ -1,8 +1,6 @@ package com.casic.endoscope.utils import com.casic.endoscope.base.BaseApplication -import com.casic.endoscope.bean.CameraPointBean -import com.casic.endoscope.greendao.CameraPointBeanDao class DataBaseManager private constructor() { @@ -13,31 +11,5 @@ } } - private var cameraPointDao = BaseApplication.get().getDaoSession().cameraPointBeanDao - - fun cacheCameraPoint(step: Int, h: Int, v: Int) { - val bean = CameraPointBean() - bean.step = step - bean.hAngle = h - bean.vAngle = v - cameraPointDao.insert(bean) - } - - fun deleteCameraPoints(beans: MutableList) { - beans.forEach { - cameraPointDao.delete(it) - } - } - - fun deleteAllCameraPoint() { - cameraPointDao.deleteAll() - } - - fun queryCameraPointById(id: Long): CameraPointBean { - return cameraPointDao.queryBuilder() - .where(CameraPointBeanDao.Properties.Id.eq(id)) - .unique() - } - - fun loadAllCameraPoint(): MutableList = cameraPointDao.loadAll() + private var gasValueBeanDao = BaseApplication.get().getDaoSession().gasValueBeanDao } \ No newline at end of file diff --git a/app/src/main/java/com/casic/endoscope/utils/EndoscopeDevOpenHelper.kt b/app/src/main/java/com/casic/endoscope/utils/EndoscopeDevOpenHelper.kt index 507b1ff..fd87f0f 100644 --- a/app/src/main/java/com/casic/endoscope/utils/EndoscopeDevOpenHelper.kt +++ b/app/src/main/java/com/casic/endoscope/utils/EndoscopeDevOpenHelper.kt @@ -2,8 +2,8 @@ import android.content.Context import android.database.sqlite.SQLiteDatabase.CursorFactory -import com.casic.endoscope.greendao.CameraPointBeanDao import com.casic.endoscope.greendao.DaoMaster +import com.casic.endoscope.greendao.GasValueBeanDao import com.github.yuweiguocn.library.greendao.MigrationHelper import com.github.yuweiguocn.library.greendao.MigrationHelper.ReCreateAllTableListener import org.greenrobot.greendao.database.Database @@ -22,7 +22,7 @@ DaoMaster.dropAllTables(db, ifExists) } }, - CameraPointBeanDao::class.java + GasValueBeanDao::class.java ) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/endoscope/view/MainActivity.kt b/app/src/main/java/com/casic/endoscope/view/MainActivity.kt index 0fe757e..c4509b0 100644 --- a/app/src/main/java/com/casic/endoscope/view/MainActivity.kt +++ b/app/src/main/java/com/casic/endoscope/view/MainActivity.kt @@ -15,8 +15,6 @@ import android.view.SurfaceHolder import android.view.View import androidx.lifecycle.lifecycleScope -import com.casic.endoscope.adapter.CameraPointAdapter -import com.casic.endoscope.bean.CameraPointBean import com.casic.endoscope.databinding.ActivityMainBinding import com.casic.endoscope.extensions.check import com.casic.endoscope.extensions.convertValue @@ -28,14 +26,12 @@ import com.casic.endoscope.extensions.init import com.casic.endoscope.extensions.toTime import com.casic.endoscope.service.VideoTranscodeService -import com.casic.endoscope.utils.DataBaseManager import com.casic.endoscope.utils.ProjectConstant import com.casic.endoscope.utils.ble.BleDeviceManager import com.casic.endoscope.utils.ble.OnDeviceConnectListener import com.casic.endoscope.utils.ble.OnDeviceDiscoveredListener import com.casic.endoscope.utils.hk.MessageCodeHub import com.casic.endoscope.utils.hk.SDKGuider -import com.casic.endoscope.widgets.AddCameraPointDialog import com.casic.endoscope.widgets.BluetoothDeviceDialog import com.casic.endoscope.widgets.LineChartMarkerView import com.github.mikephil.charting.data.Entry @@ -55,10 +51,8 @@ import com.pengxh.kt.lite.extensions.timestampToTime import com.pengxh.kt.lite.utils.LoadingDialogHub import com.pengxh.kt.lite.utils.WeakReferenceHandler -import com.pengxh.kt.lite.widget.SteeringWheelView import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch -import kotlinx.coroutines.withContext import java.text.SimpleDateFormat import java.util.Date import java.util.Locale @@ -101,17 +95,11 @@ //焦距按钮是否已松开 private var isScaleButtonUp = true - //是否拍照成功 - private var isCaptureSuccess = true - private var timer: Timer? = null private var timerTask: TimerTask? = null private var seconds = 0L - private var dataBeans: MutableList = ArrayList() - private var selectedItems: MutableList = ArrayList() private var inputVideoPath = "" private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var dataAdapter: CameraPointAdapter private lateinit var serviceIntent: Intent private lateinit var dataSet: LineDataSet private lateinit var lineData: LineData @@ -123,8 +111,6 @@ override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) - dataBeans = DataBaseManager.get.loadAllCameraPoint() - //显示数据 weakReferenceHandler.sendEmptyMessage(messageCode) @@ -147,13 +133,7 @@ override fun handleMessage(msg: Message): Boolean { if (msg.what == messageCode) { //绑定数据 - dataAdapter = CameraPointAdapter(this, dataBeans) - binding.recyclerView.adapter = dataAdapter - dataAdapter.setOnItemCheckedListener(object : CameraPointAdapter.OnItemCheckedListener { - override fun onItemChecked(position: Int, items: ArrayList) { - selectedItems = items - } - }) + } return true } @@ -209,6 +189,180 @@ } } + binding.upScaleButton.setOnTouchListener { _, event -> + when (event.action) { + MotionEvent.ACTION_DOWN -> { + if (isPreviewSuccess && isScaleButtonUp) { + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_IN, 0) + isScaleButtonUp = false + } + } + + MotionEvent.ACTION_UP -> { + isScaleButtonUp = true + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_IN, 1) + } + } + false + } + + binding.downScaleButton.setOnTouchListener { _, event -> + when (event.action) { + MotionEvent.ACTION_DOWN -> { + if (isPreviewSuccess && isScaleButtonUp) { + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_OUT, 0) + isScaleButtonUp = false + } + } + + MotionEvent.ACTION_UP -> { + isScaleButtonUp = true + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_OUT, 1) + } + } + false + } + + binding.topButton.setOnTouchListener { _, motionEvent -> + when (motionEvent.action) { + MotionEvent.ACTION_DOWN -> { + if (isPreviewSuccess && isActionUp) { + hkSDK.NET_DVR_PTZControlWithSpeed( + previewHandle, PTZCommand.TILT_UP, 0, selectedSpeed + ) + isActionUp = false + } + } + + MotionEvent.ACTION_UP -> { + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.TILT_UP, 1) + isActionUp = true + } + } + false + } + + binding.centerButton.setOnClickListener { + if (!isPreviewSuccess) { + val deviceItem = SDKGuider.sdkGuider.devManageGuider.DeviceItem() + deviceItem.szDevName = "" + deviceItem.devNetInfo = SDKGuider.sdkGuider.devManageGuider.DevNetInfo( + ProjectConstant.HK_NET_IP, + ProjectConstant.HK_NET_PORT, + ProjectConstant.HK_NET_USERNAME, + ProjectConstant.HK_NET_PASSWORD + ) + if (deviceItem.szDevName.isEmpty()) { + deviceItem.szDevName = deviceItem.devNetInfo.szIp + } + val loginV40Jna = SDKGuider.sdkGuider.devManageGuider.login_v40_jna( + deviceItem.szDevName, deviceItem.devNetInfo + ) + if (loginV40Jna) { + //配置设备通道 + try { + val deviceInfo = SDKGuider.sdkGuider.devManageGuider.devList[0] + returnUserId = deviceInfo.szUserId + + aChannelNum = + deviceInfo.deviceInfoV40_jna.struDeviceV30.byChanNum.toInt() + startAChannel = + deviceInfo.deviceInfoV40_jna.struDeviceV30.byStartChan.toInt() + + dChannelNum = + deviceInfo.deviceInfoV40_jna.struDeviceV30.byIPChanNum + deviceInfo.deviceInfoV40_jna.struDeviceV30.byHighDChanNum * 256 + startDChannel = + deviceInfo.deviceInfoV40_jna.struDeviceV30.byStartChan.toInt() + + var iAnalogStartChan = startAChannel + var iDigitalStartChan = startDChannel + + val channelList = ArrayList() + + for (i in 0 until aChannelNum) { + channelList.add("ACamera_$iAnalogStartChan") + iAnalogStartChan++ + } + + for (i in 0 until dChannelNum) { + channelList.add("DCamera_$iDigitalStartChan") + iDigitalStartChan++ + } + selectChannel = Integer.valueOf(channelList[0].getChannel()) + + val streamList = ArrayList() + streamList.add("main_stream") + streamList.add("sub_stream") + streamList.add("third_stream") + + //开始预览 + if (previewHandle != -1) { + SDKGuider.sdkGuider.devPreviewGuider.RealPlay_Stop_jni(previewHandle) + } + val strutPlayInfo = NET_DVR_PREVIEWINFO() + strutPlayInfo.lChannel = selectChannel + strutPlayInfo.dwStreamType = 1 + strutPlayInfo.bBlocked = 1 + strutPlayInfo.hHwnd = binding.surfaceView.holder + previewHandle = SDKGuider.sdkGuider.devPreviewGuider.RealPlay_V40_jni( + returnUserId, strutPlayInfo, null + ) + if (previewHandle < 0) { + Log.d(kTag, "initEvent: Err:${MessageCodeHub.getErrorCode()}") + return@setOnClickListener + } + isPreviewSuccess = true + "预览开启成功".show(context) + //开始计时 + timer = Timer() + timerTask = object : TimerTask() { + override fun run() { + seconds++ + lifecycleScope.launch(Dispatchers.Main) { + binding.runningTimeView.text = seconds.toTime() + } + } + } + timer?.schedule(timerTask, 0, 1000) + } catch (e: IndexOutOfBoundsException) { + e.printStackTrace() + "设备未正常连接,无法开启预览".show(context) + } + } else { + "设备登陆失败".show(context) + } + } else { + if (!SDKGuider.sdkGuider.devPreviewGuider.RealPlay_Stop_jni(previewHandle)) { + return@setOnClickListener + } + previewHandle = -1 + isPreviewSuccess = false + "预览关闭成功".show(context) + //停止计时 + timerTask?.cancel() + timer?.cancel() + } + } + + binding.bottomButton.setOnTouchListener { _, motionEvent -> + when (motionEvent.action) { + MotionEvent.ACTION_DOWN -> { + if (isPreviewSuccess && isActionUp) { + hkSDK.NET_DVR_PTZControlWithSpeed( + previewHandle, PTZCommand.TILT_DOWN, 0, selectedSpeed + ) + isActionUp = false + } + } + + MotionEvent.ACTION_UP -> { + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.TILT_DOWN, 1) + isActionUp = true + } + } + false + } + //单张拍照 binding.imageButton.setOnClickListener { if (isPreviewSuccess) { @@ -252,278 +406,8 @@ true } - //连续拍照 - binding.multipleImageButton.setOnClickListener { - if (dataBeans.isEmpty()) { - "请先设置连续拍照步骤".show(this) - return@setOnClickListener - } - if (isPreviewSuccess) { - lifecycleScope.launch(Dispatchers.IO) { - dataBeans.forEach { - //再拍照 - if (isCaptureSuccess) { - isCaptureSuccess = false - - //先执行角度 - executeAngle(it.hAngle, it.vAngle) - - withContext(Dispatchers.Main) { - "抓取步骤${it.step}画面".show(context) - } - - val strJpeg = NET_DVR_JPEGPARA() - strJpeg.wPicQuality = 1 - strJpeg.wPicSize = 2 - - val imagePath = - "/${createImageFileDir()}/${timeFormat.format(Date())}.png" - hkSDK.NET_DVR_CaptureJPEGPicture( - returnUserId, selectChannel, strJpeg, imagePath - ) - - isCaptureSuccess = MessageCodeHub.getErrorCode() == 0 - } - } - withContext(Dispatchers.Main) { - "连续抓取画面完成".show(context) - } - } - } else { - "摄像头预览未打开,无法拍照".show(this) - } - } - - binding.addButton.setOnClickListener { - val step = if (dataBeans.isEmpty()) { - 0 - } else { - dataBeans.last().step - } - AddCameraPointDialog.Builder().setContext(this).setLastStep(step) - .setNegativeButton("取消").setPositiveButton("添加") - .setOnDialogButtonClickListener(object : - AddCameraPointDialog.OnDialogButtonClickListener { - override fun onConfirmClick(step: Int, hAngle: Int, vAngle: Int) { - DataBaseManager.get.cacheCameraPoint(step, hAngle, vAngle) - dataBeans = DataBaseManager.get.loadAllCameraPoint() - dataAdapter.setRefreshData(dataBeans) - } - - override fun onCancelClick() { - - } - }).build().show() - } - - binding.deleteButton.setOnClickListener { - if (selectedItems.isEmpty()) { - "请先选择要删除的步骤".show(this) - return@setOnClickListener - } - DataBaseManager.get.deleteCameraPoints(selectedItems) - dataBeans = DataBaseManager.get.loadAllCameraPoint() - dataAdapter.setRefreshData(dataBeans) - selectedItems.clear() - } - - binding.steeringWheelView.setOnWheelTouchListener(object : - SteeringWheelView.OnWheelTouchListener { - override fun onCenterClicked() { - if (!isPreviewSuccess) { - val deviceItem = SDKGuider.sdkGuider.devManageGuider.DeviceItem() - deviceItem.szDevName = "" - deviceItem.devNetInfo = SDKGuider.sdkGuider.devManageGuider.DevNetInfo( - ProjectConstant.HK_NET_IP, - ProjectConstant.HK_NET_PORT, - ProjectConstant.HK_NET_USERNAME, - ProjectConstant.HK_NET_PASSWORD - ) - if (deviceItem.szDevName.isEmpty()) { - deviceItem.szDevName = deviceItem.devNetInfo.szIp - } - val loginV40Jna = SDKGuider.sdkGuider.devManageGuider.login_v40_jna( - deviceItem.szDevName, deviceItem.devNetInfo - ) - if (loginV40Jna) { - //配置设备通道 - try { - val deviceInfo = SDKGuider.sdkGuider.devManageGuider.devList[0] - returnUserId = deviceInfo.szUserId - - aChannelNum = - deviceInfo.deviceInfoV40_jna.struDeviceV30.byChanNum.toInt() - startAChannel = - deviceInfo.deviceInfoV40_jna.struDeviceV30.byStartChan.toInt() - - dChannelNum = - deviceInfo.deviceInfoV40_jna.struDeviceV30.byIPChanNum + deviceInfo.deviceInfoV40_jna.struDeviceV30.byHighDChanNum * 256 - startDChannel = - deviceInfo.deviceInfoV40_jna.struDeviceV30.byStartChan.toInt() - - var iAnalogStartChan = startAChannel - var iDigitalStartChan = startDChannel - - val channelList = ArrayList() - - for (i in 0 until aChannelNum) { - channelList.add("ACamera_$iAnalogStartChan") - iAnalogStartChan++ - } - - for (i in 0 until dChannelNum) { - channelList.add("DCamera_$iDigitalStartChan") - iDigitalStartChan++ - } - selectChannel = Integer.valueOf(channelList[0].getChannel()) - - val streamList = ArrayList() - streamList.add("main_stream") - streamList.add("sub_stream") - streamList.add("third_stream") - - //开始预览 - if (previewHandle != -1) { - SDKGuider.sdkGuider.devPreviewGuider.RealPlay_Stop_jni(previewHandle) - } - val strutPlayInfo = NET_DVR_PREVIEWINFO() - strutPlayInfo.lChannel = selectChannel - strutPlayInfo.dwStreamType = 1 - strutPlayInfo.bBlocked = 1 - strutPlayInfo.hHwnd = binding.surfaceView.holder - previewHandle = SDKGuider.sdkGuider.devPreviewGuider.RealPlay_V40_jni( - returnUserId, strutPlayInfo, null - ) - if (previewHandle < 0) { - Log.d(kTag, "initEvent: Err:${MessageCodeHub.getErrorCode()}") - return - } - isPreviewSuccess = true - "预览开启成功".show(context) - //开始计时 - timer = Timer() - timerTask = object : TimerTask() { - override fun run() { - seconds++ - lifecycleScope.launch(Dispatchers.Main) { - binding.runningTimeView.text = seconds.toTime() - } - } - } - timer?.schedule(timerTask, 0, 1000) - } catch (e: IndexOutOfBoundsException) { - e.printStackTrace() - "设备未正常连接,无法开启预览".show(context) - } - } else { - "设备登陆失败".show(context) - } - } else { - if (!SDKGuider.sdkGuider.devPreviewGuider.RealPlay_Stop_jni(previewHandle)) { - return - } - previewHandle = -1 - isPreviewSuccess = false - "预览关闭成功".show(context) - //停止计时 - timerTask?.cancel() - timer?.cancel() - } - } - - override fun onLeftTurn() { - if (isPreviewSuccess && isActionUp) { - hkSDK.NET_DVR_PTZControlWithSpeed( - previewHandle, PTZCommand.PAN_LEFT, 0, selectedSpeed - ) - isActionUp = false - } - } - - override fun onTopTurn() { - if (isPreviewSuccess && isActionUp) { - hkSDK.NET_DVR_PTZControlWithSpeed( - previewHandle, PTZCommand.TILT_UP, 0, selectedSpeed - ) - isActionUp = false - } - } - - override fun onRightTurn() { - if (isPreviewSuccess && isActionUp) { - hkSDK.NET_DVR_PTZControlWithSpeed( - previewHandle, PTZCommand.PAN_RIGHT, 0, selectedSpeed - ) - isActionUp = false - } - } - - override fun onBottomTurn() { - if (isPreviewSuccess && isActionUp) { - hkSDK.NET_DVR_PTZControlWithSpeed( - previewHandle, PTZCommand.TILT_DOWN, 0, selectedSpeed - ) - isActionUp = false - } - } - - override fun onActionTurnUp(dir: SteeringWheelView.Direction) { - when (dir) { - SteeringWheelView.Direction.LEFT -> { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.PAN_LEFT, 1) - isActionUp = true - } - - SteeringWheelView.Direction.TOP -> { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.TILT_UP, 1) - isActionUp = true - } - - SteeringWheelView.Direction.RIGHT -> { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.PAN_RIGHT, 1) - isActionUp = true - } - - SteeringWheelView.Direction.BOTTOM -> { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.TILT_DOWN, 1) - isActionUp = true - } - } - } - }) - - binding.upScaleButton.setOnTouchListener { _, event -> - when (event.action) { - MotionEvent.ACTION_DOWN -> { - if (isPreviewSuccess && isScaleButtonUp) { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_IN, 0) - isScaleButtonUp = false - } - } - - MotionEvent.ACTION_UP -> { - isScaleButtonUp = true - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_IN, 1) - } - } - false - } - - binding.downScaleButton.setOnTouchListener { _, event -> - when (event.action) { - MotionEvent.ACTION_DOWN -> { - if (isPreviewSuccess && isScaleButtonUp) { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_OUT, 0) - isScaleButtonUp = false - } - } - - MotionEvent.ACTION_UP -> { - isScaleButtonUp = true - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_OUT, 1) - } - } - false + binding.resetButton.setOnClickListener { + executeAngle(0, 0) } } diff --git a/app/src/main/res/drawable/bg_solid_layout_blue_10.xml b/app/src/main/res/drawable/bg_solid_layout_blue_10.xml new file mode 100644 index 0000000..b7e06e3 --- /dev/null +++ b/app/src/main/res/drawable/bg_solid_layout_blue_10.xml @@ -0,0 +1,7 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_stroke_layout_blue_10.xml b/app/src/main/res/drawable/bg_stroke_layout_blue_10.xml deleted file mode 100644 index d6f55c9..0000000 --- a/app/src/main/res/drawable/bg_stroke_layout_blue_10.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_camera.xml b/app/src/main/res/drawable/ic_camera.xml new file mode 100644 index 0000000..1f7ab22 --- /dev/null +++ b/app/src/main/res/drawable/ic_camera.xml @@ -0,0 +1,15 @@ + + + + + diff --git a/app/src/main/res/drawable/ic_dir_down.xml b/app/src/main/res/drawable/ic_dir_down.xml deleted file mode 100644 index e6807dc..0000000 --- a/app/src/main/res/drawable/ic_dir_down.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_dir_left.xml b/app/src/main/res/drawable/ic_dir_left.xml deleted file mode 100644 index 12b2237..0000000 --- a/app/src/main/res/drawable/ic_dir_left.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_dir_right.xml b/app/src/main/res/drawable/ic_dir_right.xml deleted file mode 100644 index 96539aa..0000000 --- a/app/src/main/res/drawable/ic_dir_right.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_dir_up.xml b/app/src/main/res/drawable/ic_dir_up.xml deleted file mode 100644 index e7a153e..0000000 --- a/app/src/main/res/drawable/ic_dir_up.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_down.xml b/app/src/main/res/drawable/ic_down.xml new file mode 100644 index 0000000..9fcd974 --- /dev/null +++ b/app/src/main/res/drawable/ic_down.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_minus.xml b/app/src/main/res/drawable/ic_minus.xml index a399f5f..2942b80 100644 --- a/app/src/main/res/drawable/ic_minus.xml +++ b/app/src/main/res/drawable/ic_minus.xml @@ -1,9 +1,9 @@ + android:fillColor="#1875F0" + android:pathData="M864,480H160c-17.6,0 -32,14.4 -32,32s14.4,32 32,32h704c17.6,0 32,-14.4 32,-32s-14.4,-32 -32,-32z" /> diff --git a/app/src/main/res/drawable/ic_off.xml b/app/src/main/res/drawable/ic_off.xml new file mode 100644 index 0000000..1940f16 --- /dev/null +++ b/app/src/main/res/drawable/ic_off.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/ic_picture.xml b/app/src/main/res/drawable/ic_picture.xml new file mode 100644 index 0000000..a781b4c --- /dev/null +++ b/app/src/main/res/drawable/ic_picture.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/build.gradle b/app/build.gradle index c2a2c53..64d4d0c 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -72,7 +72,7 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5.4' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.8' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.cardview:cardview:1.0.0' diff --git a/app/src/main/java/com/casic/endoscope/adapter/CameraPointAdapter.kt b/app/src/main/java/com/casic/endoscope/adapter/CameraPointAdapter.kt deleted file mode 100644 index fe404b2..0000000 --- a/app/src/main/java/com/casic/endoscope/adapter/CameraPointAdapter.kt +++ /dev/null @@ -1,78 +0,0 @@ -package com.casic.endoscope.adapter - -import android.annotation.SuppressLint -import android.content.Context -import android.graphics.Color -import android.view.LayoutInflater -import android.view.ViewGroup -import android.widget.LinearLayout -import androidx.recyclerview.widget.RecyclerView -import com.casic.endoscope.R -import com.casic.endoscope.bean.CameraPointBean -import com.pengxh.kt.lite.adapter.ViewHolder -import com.pengxh.kt.lite.extensions.convertColor - -class CameraPointAdapter( - private val context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var multipleSelected = mutableSetOf() - private var selectedItems = ArrayList() - - override fun getItemCount(): Int = dataRows.size - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { - return ViewHolder( - LayoutInflater.from(context).inflate(R.layout.item_point_list_rv, parent, false) - ) - } - - @SuppressLint("NotifyDataSetChanged") - fun setRefreshData(dataRows: MutableList) { - this.dataRows.clear() - this.dataRows.addAll(dataRows) - notifyDataSetChanged() - multipleSelected.clear() - selectedItems.clear() - } - - override fun onBindViewHolder(holder: ViewHolder, position: Int) { - val item = dataRows[position] - holder.setText(R.id.stepNameView, "步骤 ${item.step}") - .setText(R.id.hAngleView, "水平角度 ${item.hAngle}°") - .setText(R.id.vAngleView, "垂直角度 ${item.vAngle}°") - - val linearLayout = holder.itemView.findViewById(R.id.rootView) - //item背景色 - if (position % 2 == 0) { - linearLayout.setBackgroundColor(Color.parseColor("#C8E3F4")) - } else { - linearLayout.setBackgroundColor(R.color.backgroundColor.convertColor(context)) - } - - holder.itemView.isSelected = multipleSelected.contains(position) - holder.itemView.setOnClickListener { - if (multipleSelected.contains(position)) { - multipleSelected.remove(position) - selectedItems.remove(dataRows[position]) - holder.itemView.isSelected = false - } else { - multipleSelected.add(position) - selectedItems.add(dataRows[position]) - holder.itemView.isSelected = true - } - - itemCheckedListener?.onItemChecked(position, selectedItems) - } - } - - private var itemCheckedListener: OnItemCheckedListener? = null - - interface OnItemCheckedListener { - fun onItemChecked(position: Int, items: ArrayList) - } - - fun setOnItemCheckedListener(listener: OnItemCheckedListener) { - itemCheckedListener = listener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/endoscope/bean/CameraPointBean.java b/app/src/main/java/com/casic/endoscope/bean/CameraPointBean.java deleted file mode 100644 index 3a20d82..0000000 --- a/app/src/main/java/com/casic/endoscope/bean/CameraPointBean.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.casic.endoscope.bean; - -import org.greenrobot.greendao.annotation.Entity; -import org.greenrobot.greendao.annotation.Generated; -import org.greenrobot.greendao.annotation.Id; - -/** - * 必须是java,不能是kt - */ -@Entity -public class CameraPointBean { - - @Id(autoincrement = true) - private Long id;//主键自增 - - private int step;//步骤序号 - private int hAngle;//水平角度 - private int vAngle;//垂直角度 - - @Generated(hash = 1436018650) - public CameraPointBean(Long id, int step, int hAngle, int vAngle) { - this.id = id; - this.step = step; - this.hAngle = hAngle; - this.vAngle = vAngle; - } - - @Generated(hash = 44086073) - public CameraPointBean() { - } - - public Long getId() { - return this.id; - } - - public void setId(Long id) { - this.id = id; - } - - public int getStep() { - return this.step; - } - - public void setStep(int step) { - this.step = step; - } - - public int getHAngle() { - return this.hAngle; - } - - public void setHAngle(int hAngle) { - this.hAngle = hAngle; - } - - public int getVAngle() { - return this.vAngle; - } - - public void setVAngle(int vAngle) { - this.vAngle = vAngle; - } -} diff --git a/app/src/main/java/com/casic/endoscope/bean/GasValueBean.java b/app/src/main/java/com/casic/endoscope/bean/GasValueBean.java new file mode 100644 index 0000000..6537b9a --- /dev/null +++ b/app/src/main/java/com/casic/endoscope/bean/GasValueBean.java @@ -0,0 +1,63 @@ +package com.casic.endoscope.bean; + +import org.greenrobot.greendao.annotation.Entity; +import org.greenrobot.greendao.annotation.Generated; +import org.greenrobot.greendao.annotation.Id; + +/** + * 必须是java,不能是kt + * 甲烷浓度表结构 + */ +@Entity +public class GasValueBean { + @Id(autoincrement = true) + private Long id;//主键自增 + + private String time;//采集浓度的时间 + private int value;//采集的浓度 + private String location;//浓度采集点位置 + + @Generated(hash = 663679791) + public GasValueBean(Long id, String time, int value, String location) { + this.id = id; + this.time = time; + this.value = value; + this.location = location; + } + + @Generated(hash = 291409217) + public GasValueBean() { + } + + public Long getId() { + return this.id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getTime() { + return this.time; + } + + public void setTime(String time) { + this.time = time; + } + + public int getValue() { + return this.value; + } + + public void setValue(int value) { + this.value = value; + } + + public String getLocation() { + return this.location; + } + + public void setLocation(String location) { + this.location = location; + } +} diff --git a/app/src/main/java/com/casic/endoscope/greendao/CameraPointBeanDao.java b/app/src/main/java/com/casic/endoscope/greendao/CameraPointBeanDao.java deleted file mode 100644 index 11bc932..0000000 --- a/app/src/main/java/com/casic/endoscope/greendao/CameraPointBeanDao.java +++ /dev/null @@ -1,138 +0,0 @@ -package com.casic.endoscope.greendao; - -import android.database.Cursor; -import android.database.sqlite.SQLiteStatement; - -import com.casic.endoscope.bean.CameraPointBean; - -import org.greenrobot.greendao.AbstractDao; -import org.greenrobot.greendao.Property; -import org.greenrobot.greendao.database.Database; -import org.greenrobot.greendao.database.DatabaseStatement; -import org.greenrobot.greendao.internal.DaoConfig; - -// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. - -/** - * DAO for table "CAMERA_POINT_BEAN". - */ -public class CameraPointBeanDao extends AbstractDao { - - public static final String TABLENAME = "CAMERA_POINT_BEAN"; - - /** - * Properties of entity CameraPointBean.
- * Can be used for QueryBuilder and for referencing column names. - */ - public static class Properties { - public final static Property Id = new Property(0, Long.class, "id", true, "_id"); - public final static Property Step = new Property(1, int.class, "step", false, "STEP"); - public final static Property HAngle = new Property(2, int.class, "hAngle", false, "H_ANGLE"); - public final static Property VAngle = new Property(3, int.class, "vAngle", false, "V_ANGLE"); - } - - - public CameraPointBeanDao(DaoConfig config) { - super(config); - } - - public CameraPointBeanDao(DaoConfig config, DaoSession daoSession) { - super(config, daoSession); - } - - /** - * Creates the underlying database table. - */ - public static void createTable(Database db, boolean ifNotExists) { - String constraint = ifNotExists ? "IF NOT EXISTS " : ""; - db.execSQL("CREATE TABLE " + constraint + "\"CAMERA_POINT_BEAN\" (" + // - "\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id - "\"STEP\" INTEGER NOT NULL ," + // 1: step - "\"H_ANGLE\" INTEGER NOT NULL ," + // 2: hAngle - "\"V_ANGLE\" INTEGER NOT NULL );"); // 3: vAngle - } - - /** - * Drops the underlying database table. - */ - public static void dropTable(Database db, boolean ifExists) { - String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"CAMERA_POINT_BEAN\""; - db.execSQL(sql); - } - - @Override - protected final void bindValues(DatabaseStatement stmt, CameraPointBean entity) { - stmt.clearBindings(); - - Long id = entity.getId(); - if (id != null) { - stmt.bindLong(1, id); - } - stmt.bindLong(2, entity.getStep()); - stmt.bindLong(3, entity.getHAngle()); - stmt.bindLong(4, entity.getVAngle()); - } - - @Override - protected final void bindValues(SQLiteStatement stmt, CameraPointBean entity) { - stmt.clearBindings(); - - Long id = entity.getId(); - if (id != null) { - stmt.bindLong(1, id); - } - stmt.bindLong(2, entity.getStep()); - stmt.bindLong(3, entity.getHAngle()); - stmt.bindLong(4, entity.getVAngle()); - } - - @Override - public Long readKey(Cursor cursor, int offset) { - return cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0); - } - - @Override - public CameraPointBean readEntity(Cursor cursor, int offset) { - CameraPointBean entity = new CameraPointBean( // - cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id - cursor.getInt(offset + 1), // step - cursor.getInt(offset + 2), // hAngle - cursor.getInt(offset + 3) // vAngle - ); - return entity; - } - - @Override - public void readEntity(Cursor cursor, CameraPointBean entity, int offset) { - entity.setId(cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0)); - entity.setStep(cursor.getInt(offset + 1)); - entity.setHAngle(cursor.getInt(offset + 2)); - entity.setVAngle(cursor.getInt(offset + 3)); - } - - @Override - protected final Long updateKeyAfterInsert(CameraPointBean entity, long rowId) { - entity.setId(rowId); - return rowId; - } - - @Override - public Long getKey(CameraPointBean entity) { - if (entity != null) { - return entity.getId(); - } else { - return null; - } - } - - @Override - public boolean hasKey(CameraPointBean entity) { - return entity.getId() != null; - } - - @Override - protected final boolean isEntityUpdateable() { - return true; - } - -} diff --git a/app/src/main/java/com/casic/endoscope/greendao/DaoMaster.java b/app/src/main/java/com/casic/endoscope/greendao/DaoMaster.java index 5d4fa30..a455fd0 100644 --- a/app/src/main/java/com/casic/endoscope/greendao/DaoMaster.java +++ b/app/src/main/java/com/casic/endoscope/greendao/DaoMaster.java @@ -13,25 +13,20 @@ // THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. - /** * Master of DAO (schema version 1): knows all DAOs. */ public class DaoMaster extends AbstractDaoMaster { public static final int SCHEMA_VERSION = 1; - /** - * Creates underlying database table using DAOs. - */ + /** Creates underlying database table using DAOs. */ public static void createAllTables(Database db, boolean ifNotExists) { - CameraPointBeanDao.createTable(db, ifNotExists); + GasValueBeanDao.createTable(db, ifNotExists); } - /** - * Drops underlying database table using DAOs. - */ + /** Drops underlying database table using DAOs. */ public static void dropAllTables(Database db, boolean ifExists) { - CameraPointBeanDao.dropTable(db, ifExists); + GasValueBeanDao.dropTable(db, ifExists); } /** @@ -50,7 +45,7 @@ public DaoMaster(Database db) { super(db, SCHEMA_VERSION); - registerDaoClass(CameraPointBeanDao.class); + registerDaoClass(GasValueBeanDao.class); } public DaoSession newSession() { @@ -80,9 +75,7 @@ } } - /** - * WARNING: Drops all table on Upgrade! Use only during development. - */ + /** WARNING: Drops all table on Upgrade! Use only during development. */ public static class DevOpenHelper extends OpenHelper { public DevOpenHelper(Context context, String name) { super(context, name); diff --git a/app/src/main/java/com/casic/endoscope/greendao/DaoSession.java b/app/src/main/java/com/casic/endoscope/greendao/DaoSession.java index ed2f9c0..259243d 100644 --- a/app/src/main/java/com/casic/endoscope/greendao/DaoSession.java +++ b/app/src/main/java/com/casic/endoscope/greendao/DaoSession.java @@ -1,6 +1,6 @@ package com.casic.endoscope.greendao; -import com.casic.endoscope.bean.CameraPointBean; +import com.casic.endoscope.bean.GasValueBean; import org.greenrobot.greendao.AbstractDao; import org.greenrobot.greendao.AbstractDaoSession; @@ -19,28 +19,28 @@ */ public class DaoSession extends AbstractDaoSession { - private final DaoConfig cameraPointBeanDaoConfig; + private final DaoConfig gasValueBeanDaoConfig; - private final CameraPointBeanDao cameraPointBeanDao; + private final GasValueBeanDao gasValueBeanDao; public DaoSession(Database db, IdentityScopeType type, Map>, DaoConfig> daoConfigMap) { super(db); - cameraPointBeanDaoConfig = daoConfigMap.get(CameraPointBeanDao.class).clone(); - cameraPointBeanDaoConfig.initIdentityScope(type); + gasValueBeanDaoConfig = daoConfigMap.get(GasValueBeanDao.class).clone(); + gasValueBeanDaoConfig.initIdentityScope(type); - cameraPointBeanDao = new CameraPointBeanDao(cameraPointBeanDaoConfig, this); + gasValueBeanDao = new GasValueBeanDao(gasValueBeanDaoConfig, this); - registerDao(CameraPointBean.class, cameraPointBeanDao); + registerDao(GasValueBean.class, gasValueBeanDao); } public void clear() { - cameraPointBeanDaoConfig.clearIdentityScope(); + gasValueBeanDaoConfig.clearIdentityScope(); } - public CameraPointBeanDao getCameraPointBeanDao() { - return cameraPointBeanDao; + public GasValueBeanDao getGasValueBeanDao() { + return gasValueBeanDao; } } diff --git a/app/src/main/java/com/casic/endoscope/greendao/GasValueBeanDao.java b/app/src/main/java/com/casic/endoscope/greendao/GasValueBeanDao.java new file mode 100644 index 0000000..5149375 --- /dev/null +++ b/app/src/main/java/com/casic/endoscope/greendao/GasValueBeanDao.java @@ -0,0 +1,149 @@ +package com.casic.endoscope.greendao; + +import android.database.Cursor; +import android.database.sqlite.SQLiteStatement; + +import com.casic.endoscope.bean.GasValueBean; + +import org.greenrobot.greendao.AbstractDao; +import org.greenrobot.greendao.Property; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.database.DatabaseStatement; +import org.greenrobot.greendao.internal.DaoConfig; + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. +/** + * DAO for table "GAS_VALUE_BEAN". +*/ +public class GasValueBeanDao extends AbstractDao { + + public static final String TABLENAME = "GAS_VALUE_BEAN"; + + /** + * Properties of entity GasValueBean.
+ * Can be used for QueryBuilder and for referencing column names. + */ + public static class Properties { + public final static Property Id = new Property(0, Long.class, "id", true, "_id"); + public final static Property Time = new Property(1, String.class, "time", false, "TIME"); + public final static Property Value = new Property(2, int.class, "value", false, "VALUE"); + public final static Property Location = new Property(3, String.class, "location", false, "LOCATION"); + } + + + public GasValueBeanDao(DaoConfig config) { + super(config); + } + + public GasValueBeanDao(DaoConfig config, DaoSession daoSession) { + super(config, daoSession); + } + + /** Creates the underlying database table. */ + public static void createTable(Database db, boolean ifNotExists) { + String constraint = ifNotExists? "IF NOT EXISTS ": ""; + db.execSQL("CREATE TABLE " + constraint + "\"GAS_VALUE_BEAN\" (" + // + "\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id + "\"TIME\" TEXT," + // 1: time + "\"VALUE\" INTEGER NOT NULL ," + // 2: value + "\"LOCATION\" TEXT);"); // 3: location + } + + /** Drops the underlying database table. */ + public static void dropTable(Database db, boolean ifExists) { + String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"GAS_VALUE_BEAN\""; + db.execSQL(sql); + } + + @Override + protected final void bindValues(DatabaseStatement stmt, GasValueBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String time = entity.getTime(); + if (time != null) { + stmt.bindString(2, time); + } + stmt.bindLong(3, entity.getValue()); + + String location = entity.getLocation(); + if (location != null) { + stmt.bindString(4, location); + } + } + + @Override + protected final void bindValues(SQLiteStatement stmt, GasValueBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String time = entity.getTime(); + if (time != null) { + stmt.bindString(2, time); + } + stmt.bindLong(3, entity.getValue()); + + String location = entity.getLocation(); + if (location != null) { + stmt.bindString(4, location); + } + } + + @Override + public Long readKey(Cursor cursor, int offset) { + return cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0); + } + + @Override + public GasValueBean readEntity(Cursor cursor, int offset) { + GasValueBean entity = new GasValueBean( // + cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id + cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // time + cursor.getInt(offset + 2), // value + cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3) // location + ); + return entity; + } + + @Override + public void readEntity(Cursor cursor, GasValueBean entity, int offset) { + entity.setId(cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0)); + entity.setTime(cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1)); + entity.setValue(cursor.getInt(offset + 2)); + entity.setLocation(cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3)); + } + + @Override + protected final Long updateKeyAfterInsert(GasValueBean entity, long rowId) { + entity.setId(rowId); + return rowId; + } + + @Override + public Long getKey(GasValueBean entity) { + if(entity != null) { + return entity.getId(); + } else { + return null; + } + } + + @Override + public boolean hasKey(GasValueBean entity) { + return entity.getId() != null; + } + + @Override + protected final boolean isEntityUpdateable() { + return true; + } + +} diff --git a/app/src/main/java/com/casic/endoscope/utils/DataBaseManager.kt b/app/src/main/java/com/casic/endoscope/utils/DataBaseManager.kt index a593a5b..c683db1 100644 --- a/app/src/main/java/com/casic/endoscope/utils/DataBaseManager.kt +++ b/app/src/main/java/com/casic/endoscope/utils/DataBaseManager.kt @@ -1,8 +1,6 @@ package com.casic.endoscope.utils import com.casic.endoscope.base.BaseApplication -import com.casic.endoscope.bean.CameraPointBean -import com.casic.endoscope.greendao.CameraPointBeanDao class DataBaseManager private constructor() { @@ -13,31 +11,5 @@ } } - private var cameraPointDao = BaseApplication.get().getDaoSession().cameraPointBeanDao - - fun cacheCameraPoint(step: Int, h: Int, v: Int) { - val bean = CameraPointBean() - bean.step = step - bean.hAngle = h - bean.vAngle = v - cameraPointDao.insert(bean) - } - - fun deleteCameraPoints(beans: MutableList) { - beans.forEach { - cameraPointDao.delete(it) - } - } - - fun deleteAllCameraPoint() { - cameraPointDao.deleteAll() - } - - fun queryCameraPointById(id: Long): CameraPointBean { - return cameraPointDao.queryBuilder() - .where(CameraPointBeanDao.Properties.Id.eq(id)) - .unique() - } - - fun loadAllCameraPoint(): MutableList = cameraPointDao.loadAll() + private var gasValueBeanDao = BaseApplication.get().getDaoSession().gasValueBeanDao } \ No newline at end of file diff --git a/app/src/main/java/com/casic/endoscope/utils/EndoscopeDevOpenHelper.kt b/app/src/main/java/com/casic/endoscope/utils/EndoscopeDevOpenHelper.kt index 507b1ff..fd87f0f 100644 --- a/app/src/main/java/com/casic/endoscope/utils/EndoscopeDevOpenHelper.kt +++ b/app/src/main/java/com/casic/endoscope/utils/EndoscopeDevOpenHelper.kt @@ -2,8 +2,8 @@ import android.content.Context import android.database.sqlite.SQLiteDatabase.CursorFactory -import com.casic.endoscope.greendao.CameraPointBeanDao import com.casic.endoscope.greendao.DaoMaster +import com.casic.endoscope.greendao.GasValueBeanDao import com.github.yuweiguocn.library.greendao.MigrationHelper import com.github.yuweiguocn.library.greendao.MigrationHelper.ReCreateAllTableListener import org.greenrobot.greendao.database.Database @@ -22,7 +22,7 @@ DaoMaster.dropAllTables(db, ifExists) } }, - CameraPointBeanDao::class.java + GasValueBeanDao::class.java ) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/endoscope/view/MainActivity.kt b/app/src/main/java/com/casic/endoscope/view/MainActivity.kt index 0fe757e..c4509b0 100644 --- a/app/src/main/java/com/casic/endoscope/view/MainActivity.kt +++ b/app/src/main/java/com/casic/endoscope/view/MainActivity.kt @@ -15,8 +15,6 @@ import android.view.SurfaceHolder import android.view.View import androidx.lifecycle.lifecycleScope -import com.casic.endoscope.adapter.CameraPointAdapter -import com.casic.endoscope.bean.CameraPointBean import com.casic.endoscope.databinding.ActivityMainBinding import com.casic.endoscope.extensions.check import com.casic.endoscope.extensions.convertValue @@ -28,14 +26,12 @@ import com.casic.endoscope.extensions.init import com.casic.endoscope.extensions.toTime import com.casic.endoscope.service.VideoTranscodeService -import com.casic.endoscope.utils.DataBaseManager import com.casic.endoscope.utils.ProjectConstant import com.casic.endoscope.utils.ble.BleDeviceManager import com.casic.endoscope.utils.ble.OnDeviceConnectListener import com.casic.endoscope.utils.ble.OnDeviceDiscoveredListener import com.casic.endoscope.utils.hk.MessageCodeHub import com.casic.endoscope.utils.hk.SDKGuider -import com.casic.endoscope.widgets.AddCameraPointDialog import com.casic.endoscope.widgets.BluetoothDeviceDialog import com.casic.endoscope.widgets.LineChartMarkerView import com.github.mikephil.charting.data.Entry @@ -55,10 +51,8 @@ import com.pengxh.kt.lite.extensions.timestampToTime import com.pengxh.kt.lite.utils.LoadingDialogHub import com.pengxh.kt.lite.utils.WeakReferenceHandler -import com.pengxh.kt.lite.widget.SteeringWheelView import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch -import kotlinx.coroutines.withContext import java.text.SimpleDateFormat import java.util.Date import java.util.Locale @@ -101,17 +95,11 @@ //焦距按钮是否已松开 private var isScaleButtonUp = true - //是否拍照成功 - private var isCaptureSuccess = true - private var timer: Timer? = null private var timerTask: TimerTask? = null private var seconds = 0L - private var dataBeans: MutableList = ArrayList() - private var selectedItems: MutableList = ArrayList() private var inputVideoPath = "" private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var dataAdapter: CameraPointAdapter private lateinit var serviceIntent: Intent private lateinit var dataSet: LineDataSet private lateinit var lineData: LineData @@ -123,8 +111,6 @@ override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) - dataBeans = DataBaseManager.get.loadAllCameraPoint() - //显示数据 weakReferenceHandler.sendEmptyMessage(messageCode) @@ -147,13 +133,7 @@ override fun handleMessage(msg: Message): Boolean { if (msg.what == messageCode) { //绑定数据 - dataAdapter = CameraPointAdapter(this, dataBeans) - binding.recyclerView.adapter = dataAdapter - dataAdapter.setOnItemCheckedListener(object : CameraPointAdapter.OnItemCheckedListener { - override fun onItemChecked(position: Int, items: ArrayList) { - selectedItems = items - } - }) + } return true } @@ -209,6 +189,180 @@ } } + binding.upScaleButton.setOnTouchListener { _, event -> + when (event.action) { + MotionEvent.ACTION_DOWN -> { + if (isPreviewSuccess && isScaleButtonUp) { + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_IN, 0) + isScaleButtonUp = false + } + } + + MotionEvent.ACTION_UP -> { + isScaleButtonUp = true + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_IN, 1) + } + } + false + } + + binding.downScaleButton.setOnTouchListener { _, event -> + when (event.action) { + MotionEvent.ACTION_DOWN -> { + if (isPreviewSuccess && isScaleButtonUp) { + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_OUT, 0) + isScaleButtonUp = false + } + } + + MotionEvent.ACTION_UP -> { + isScaleButtonUp = true + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_OUT, 1) + } + } + false + } + + binding.topButton.setOnTouchListener { _, motionEvent -> + when (motionEvent.action) { + MotionEvent.ACTION_DOWN -> { + if (isPreviewSuccess && isActionUp) { + hkSDK.NET_DVR_PTZControlWithSpeed( + previewHandle, PTZCommand.TILT_UP, 0, selectedSpeed + ) + isActionUp = false + } + } + + MotionEvent.ACTION_UP -> { + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.TILT_UP, 1) + isActionUp = true + } + } + false + } + + binding.centerButton.setOnClickListener { + if (!isPreviewSuccess) { + val deviceItem = SDKGuider.sdkGuider.devManageGuider.DeviceItem() + deviceItem.szDevName = "" + deviceItem.devNetInfo = SDKGuider.sdkGuider.devManageGuider.DevNetInfo( + ProjectConstant.HK_NET_IP, + ProjectConstant.HK_NET_PORT, + ProjectConstant.HK_NET_USERNAME, + ProjectConstant.HK_NET_PASSWORD + ) + if (deviceItem.szDevName.isEmpty()) { + deviceItem.szDevName = deviceItem.devNetInfo.szIp + } + val loginV40Jna = SDKGuider.sdkGuider.devManageGuider.login_v40_jna( + deviceItem.szDevName, deviceItem.devNetInfo + ) + if (loginV40Jna) { + //配置设备通道 + try { + val deviceInfo = SDKGuider.sdkGuider.devManageGuider.devList[0] + returnUserId = deviceInfo.szUserId + + aChannelNum = + deviceInfo.deviceInfoV40_jna.struDeviceV30.byChanNum.toInt() + startAChannel = + deviceInfo.deviceInfoV40_jna.struDeviceV30.byStartChan.toInt() + + dChannelNum = + deviceInfo.deviceInfoV40_jna.struDeviceV30.byIPChanNum + deviceInfo.deviceInfoV40_jna.struDeviceV30.byHighDChanNum * 256 + startDChannel = + deviceInfo.deviceInfoV40_jna.struDeviceV30.byStartChan.toInt() + + var iAnalogStartChan = startAChannel + var iDigitalStartChan = startDChannel + + val channelList = ArrayList() + + for (i in 0 until aChannelNum) { + channelList.add("ACamera_$iAnalogStartChan") + iAnalogStartChan++ + } + + for (i in 0 until dChannelNum) { + channelList.add("DCamera_$iDigitalStartChan") + iDigitalStartChan++ + } + selectChannel = Integer.valueOf(channelList[0].getChannel()) + + val streamList = ArrayList() + streamList.add("main_stream") + streamList.add("sub_stream") + streamList.add("third_stream") + + //开始预览 + if (previewHandle != -1) { + SDKGuider.sdkGuider.devPreviewGuider.RealPlay_Stop_jni(previewHandle) + } + val strutPlayInfo = NET_DVR_PREVIEWINFO() + strutPlayInfo.lChannel = selectChannel + strutPlayInfo.dwStreamType = 1 + strutPlayInfo.bBlocked = 1 + strutPlayInfo.hHwnd = binding.surfaceView.holder + previewHandle = SDKGuider.sdkGuider.devPreviewGuider.RealPlay_V40_jni( + returnUserId, strutPlayInfo, null + ) + if (previewHandle < 0) { + Log.d(kTag, "initEvent: Err:${MessageCodeHub.getErrorCode()}") + return@setOnClickListener + } + isPreviewSuccess = true + "预览开启成功".show(context) + //开始计时 + timer = Timer() + timerTask = object : TimerTask() { + override fun run() { + seconds++ + lifecycleScope.launch(Dispatchers.Main) { + binding.runningTimeView.text = seconds.toTime() + } + } + } + timer?.schedule(timerTask, 0, 1000) + } catch (e: IndexOutOfBoundsException) { + e.printStackTrace() + "设备未正常连接,无法开启预览".show(context) + } + } else { + "设备登陆失败".show(context) + } + } else { + if (!SDKGuider.sdkGuider.devPreviewGuider.RealPlay_Stop_jni(previewHandle)) { + return@setOnClickListener + } + previewHandle = -1 + isPreviewSuccess = false + "预览关闭成功".show(context) + //停止计时 + timerTask?.cancel() + timer?.cancel() + } + } + + binding.bottomButton.setOnTouchListener { _, motionEvent -> + when (motionEvent.action) { + MotionEvent.ACTION_DOWN -> { + if (isPreviewSuccess && isActionUp) { + hkSDK.NET_DVR_PTZControlWithSpeed( + previewHandle, PTZCommand.TILT_DOWN, 0, selectedSpeed + ) + isActionUp = false + } + } + + MotionEvent.ACTION_UP -> { + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.TILT_DOWN, 1) + isActionUp = true + } + } + false + } + //单张拍照 binding.imageButton.setOnClickListener { if (isPreviewSuccess) { @@ -252,278 +406,8 @@ true } - //连续拍照 - binding.multipleImageButton.setOnClickListener { - if (dataBeans.isEmpty()) { - "请先设置连续拍照步骤".show(this) - return@setOnClickListener - } - if (isPreviewSuccess) { - lifecycleScope.launch(Dispatchers.IO) { - dataBeans.forEach { - //再拍照 - if (isCaptureSuccess) { - isCaptureSuccess = false - - //先执行角度 - executeAngle(it.hAngle, it.vAngle) - - withContext(Dispatchers.Main) { - "抓取步骤${it.step}画面".show(context) - } - - val strJpeg = NET_DVR_JPEGPARA() - strJpeg.wPicQuality = 1 - strJpeg.wPicSize = 2 - - val imagePath = - "/${createImageFileDir()}/${timeFormat.format(Date())}.png" - hkSDK.NET_DVR_CaptureJPEGPicture( - returnUserId, selectChannel, strJpeg, imagePath - ) - - isCaptureSuccess = MessageCodeHub.getErrorCode() == 0 - } - } - withContext(Dispatchers.Main) { - "连续抓取画面完成".show(context) - } - } - } else { - "摄像头预览未打开,无法拍照".show(this) - } - } - - binding.addButton.setOnClickListener { - val step = if (dataBeans.isEmpty()) { - 0 - } else { - dataBeans.last().step - } - AddCameraPointDialog.Builder().setContext(this).setLastStep(step) - .setNegativeButton("取消").setPositiveButton("添加") - .setOnDialogButtonClickListener(object : - AddCameraPointDialog.OnDialogButtonClickListener { - override fun onConfirmClick(step: Int, hAngle: Int, vAngle: Int) { - DataBaseManager.get.cacheCameraPoint(step, hAngle, vAngle) - dataBeans = DataBaseManager.get.loadAllCameraPoint() - dataAdapter.setRefreshData(dataBeans) - } - - override fun onCancelClick() { - - } - }).build().show() - } - - binding.deleteButton.setOnClickListener { - if (selectedItems.isEmpty()) { - "请先选择要删除的步骤".show(this) - return@setOnClickListener - } - DataBaseManager.get.deleteCameraPoints(selectedItems) - dataBeans = DataBaseManager.get.loadAllCameraPoint() - dataAdapter.setRefreshData(dataBeans) - selectedItems.clear() - } - - binding.steeringWheelView.setOnWheelTouchListener(object : - SteeringWheelView.OnWheelTouchListener { - override fun onCenterClicked() { - if (!isPreviewSuccess) { - val deviceItem = SDKGuider.sdkGuider.devManageGuider.DeviceItem() - deviceItem.szDevName = "" - deviceItem.devNetInfo = SDKGuider.sdkGuider.devManageGuider.DevNetInfo( - ProjectConstant.HK_NET_IP, - ProjectConstant.HK_NET_PORT, - ProjectConstant.HK_NET_USERNAME, - ProjectConstant.HK_NET_PASSWORD - ) - if (deviceItem.szDevName.isEmpty()) { - deviceItem.szDevName = deviceItem.devNetInfo.szIp - } - val loginV40Jna = SDKGuider.sdkGuider.devManageGuider.login_v40_jna( - deviceItem.szDevName, deviceItem.devNetInfo - ) - if (loginV40Jna) { - //配置设备通道 - try { - val deviceInfo = SDKGuider.sdkGuider.devManageGuider.devList[0] - returnUserId = deviceInfo.szUserId - - aChannelNum = - deviceInfo.deviceInfoV40_jna.struDeviceV30.byChanNum.toInt() - startAChannel = - deviceInfo.deviceInfoV40_jna.struDeviceV30.byStartChan.toInt() - - dChannelNum = - deviceInfo.deviceInfoV40_jna.struDeviceV30.byIPChanNum + deviceInfo.deviceInfoV40_jna.struDeviceV30.byHighDChanNum * 256 - startDChannel = - deviceInfo.deviceInfoV40_jna.struDeviceV30.byStartChan.toInt() - - var iAnalogStartChan = startAChannel - var iDigitalStartChan = startDChannel - - val channelList = ArrayList() - - for (i in 0 until aChannelNum) { - channelList.add("ACamera_$iAnalogStartChan") - iAnalogStartChan++ - } - - for (i in 0 until dChannelNum) { - channelList.add("DCamera_$iDigitalStartChan") - iDigitalStartChan++ - } - selectChannel = Integer.valueOf(channelList[0].getChannel()) - - val streamList = ArrayList() - streamList.add("main_stream") - streamList.add("sub_stream") - streamList.add("third_stream") - - //开始预览 - if (previewHandle != -1) { - SDKGuider.sdkGuider.devPreviewGuider.RealPlay_Stop_jni(previewHandle) - } - val strutPlayInfo = NET_DVR_PREVIEWINFO() - strutPlayInfo.lChannel = selectChannel - strutPlayInfo.dwStreamType = 1 - strutPlayInfo.bBlocked = 1 - strutPlayInfo.hHwnd = binding.surfaceView.holder - previewHandle = SDKGuider.sdkGuider.devPreviewGuider.RealPlay_V40_jni( - returnUserId, strutPlayInfo, null - ) - if (previewHandle < 0) { - Log.d(kTag, "initEvent: Err:${MessageCodeHub.getErrorCode()}") - return - } - isPreviewSuccess = true - "预览开启成功".show(context) - //开始计时 - timer = Timer() - timerTask = object : TimerTask() { - override fun run() { - seconds++ - lifecycleScope.launch(Dispatchers.Main) { - binding.runningTimeView.text = seconds.toTime() - } - } - } - timer?.schedule(timerTask, 0, 1000) - } catch (e: IndexOutOfBoundsException) { - e.printStackTrace() - "设备未正常连接,无法开启预览".show(context) - } - } else { - "设备登陆失败".show(context) - } - } else { - if (!SDKGuider.sdkGuider.devPreviewGuider.RealPlay_Stop_jni(previewHandle)) { - return - } - previewHandle = -1 - isPreviewSuccess = false - "预览关闭成功".show(context) - //停止计时 - timerTask?.cancel() - timer?.cancel() - } - } - - override fun onLeftTurn() { - if (isPreviewSuccess && isActionUp) { - hkSDK.NET_DVR_PTZControlWithSpeed( - previewHandle, PTZCommand.PAN_LEFT, 0, selectedSpeed - ) - isActionUp = false - } - } - - override fun onTopTurn() { - if (isPreviewSuccess && isActionUp) { - hkSDK.NET_DVR_PTZControlWithSpeed( - previewHandle, PTZCommand.TILT_UP, 0, selectedSpeed - ) - isActionUp = false - } - } - - override fun onRightTurn() { - if (isPreviewSuccess && isActionUp) { - hkSDK.NET_DVR_PTZControlWithSpeed( - previewHandle, PTZCommand.PAN_RIGHT, 0, selectedSpeed - ) - isActionUp = false - } - } - - override fun onBottomTurn() { - if (isPreviewSuccess && isActionUp) { - hkSDK.NET_DVR_PTZControlWithSpeed( - previewHandle, PTZCommand.TILT_DOWN, 0, selectedSpeed - ) - isActionUp = false - } - } - - override fun onActionTurnUp(dir: SteeringWheelView.Direction) { - when (dir) { - SteeringWheelView.Direction.LEFT -> { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.PAN_LEFT, 1) - isActionUp = true - } - - SteeringWheelView.Direction.TOP -> { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.TILT_UP, 1) - isActionUp = true - } - - SteeringWheelView.Direction.RIGHT -> { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.PAN_RIGHT, 1) - isActionUp = true - } - - SteeringWheelView.Direction.BOTTOM -> { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.TILT_DOWN, 1) - isActionUp = true - } - } - } - }) - - binding.upScaleButton.setOnTouchListener { _, event -> - when (event.action) { - MotionEvent.ACTION_DOWN -> { - if (isPreviewSuccess && isScaleButtonUp) { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_IN, 0) - isScaleButtonUp = false - } - } - - MotionEvent.ACTION_UP -> { - isScaleButtonUp = true - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_IN, 1) - } - } - false - } - - binding.downScaleButton.setOnTouchListener { _, event -> - when (event.action) { - MotionEvent.ACTION_DOWN -> { - if (isPreviewSuccess && isScaleButtonUp) { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_OUT, 0) - isScaleButtonUp = false - } - } - - MotionEvent.ACTION_UP -> { - isScaleButtonUp = true - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_OUT, 1) - } - } - false + binding.resetButton.setOnClickListener { + executeAngle(0, 0) } } diff --git a/app/src/main/res/drawable/bg_solid_layout_blue_10.xml b/app/src/main/res/drawable/bg_solid_layout_blue_10.xml new file mode 100644 index 0000000..b7e06e3 --- /dev/null +++ b/app/src/main/res/drawable/bg_solid_layout_blue_10.xml @@ -0,0 +1,7 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_stroke_layout_blue_10.xml b/app/src/main/res/drawable/bg_stroke_layout_blue_10.xml deleted file mode 100644 index d6f55c9..0000000 --- a/app/src/main/res/drawable/bg_stroke_layout_blue_10.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_camera.xml b/app/src/main/res/drawable/ic_camera.xml new file mode 100644 index 0000000..1f7ab22 --- /dev/null +++ b/app/src/main/res/drawable/ic_camera.xml @@ -0,0 +1,15 @@ + + + + + diff --git a/app/src/main/res/drawable/ic_dir_down.xml b/app/src/main/res/drawable/ic_dir_down.xml deleted file mode 100644 index e6807dc..0000000 --- a/app/src/main/res/drawable/ic_dir_down.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_dir_left.xml b/app/src/main/res/drawable/ic_dir_left.xml deleted file mode 100644 index 12b2237..0000000 --- a/app/src/main/res/drawable/ic_dir_left.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_dir_right.xml b/app/src/main/res/drawable/ic_dir_right.xml deleted file mode 100644 index 96539aa..0000000 --- a/app/src/main/res/drawable/ic_dir_right.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_dir_up.xml b/app/src/main/res/drawable/ic_dir_up.xml deleted file mode 100644 index e7a153e..0000000 --- a/app/src/main/res/drawable/ic_dir_up.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_down.xml b/app/src/main/res/drawable/ic_down.xml new file mode 100644 index 0000000..9fcd974 --- /dev/null +++ b/app/src/main/res/drawable/ic_down.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_minus.xml b/app/src/main/res/drawable/ic_minus.xml index a399f5f..2942b80 100644 --- a/app/src/main/res/drawable/ic_minus.xml +++ b/app/src/main/res/drawable/ic_minus.xml @@ -1,9 +1,9 @@ + android:fillColor="#1875F0" + android:pathData="M864,480H160c-17.6,0 -32,14.4 -32,32s14.4,32 32,32h704c17.6,0 32,-14.4 32,-32s-14.4,-32 -32,-32z" /> diff --git a/app/src/main/res/drawable/ic_off.xml b/app/src/main/res/drawable/ic_off.xml new file mode 100644 index 0000000..1940f16 --- /dev/null +++ b/app/src/main/res/drawable/ic_off.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/ic_picture.xml b/app/src/main/res/drawable/ic_picture.xml new file mode 100644 index 0000000..a781b4c --- /dev/null +++ b/app/src/main/res/drawable/ic_picture.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/ic_plus.xml b/app/src/main/res/drawable/ic_plus.xml index 49d9fb0..db4941d 100644 --- a/app/src/main/res/drawable/ic_plus.xml +++ b/app/src/main/res/drawable/ic_plus.xml @@ -1,9 +1,9 @@ + android:fillColor="#1875F0" + android:pathData="M864,480H544V160c0,-17.6 -14.4,-32 -32,-32s-32,14.4 -32,32v320H160c-17.6,0 -32,14.4 -32,32s14.4,32 32,32h320v320c0,17.6 14.4,32 32,32s32,-14.4 32,-32V544h320c17.6,0 32,-14.4 32,-32s-14.4,-32 -32,-32z" /> diff --git a/app/build.gradle b/app/build.gradle index c2a2c53..64d4d0c 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -72,7 +72,7 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5.4' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.8' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.cardview:cardview:1.0.0' diff --git a/app/src/main/java/com/casic/endoscope/adapter/CameraPointAdapter.kt b/app/src/main/java/com/casic/endoscope/adapter/CameraPointAdapter.kt deleted file mode 100644 index fe404b2..0000000 --- a/app/src/main/java/com/casic/endoscope/adapter/CameraPointAdapter.kt +++ /dev/null @@ -1,78 +0,0 @@ -package com.casic.endoscope.adapter - -import android.annotation.SuppressLint -import android.content.Context -import android.graphics.Color -import android.view.LayoutInflater -import android.view.ViewGroup -import android.widget.LinearLayout -import androidx.recyclerview.widget.RecyclerView -import com.casic.endoscope.R -import com.casic.endoscope.bean.CameraPointBean -import com.pengxh.kt.lite.adapter.ViewHolder -import com.pengxh.kt.lite.extensions.convertColor - -class CameraPointAdapter( - private val context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var multipleSelected = mutableSetOf() - private var selectedItems = ArrayList() - - override fun getItemCount(): Int = dataRows.size - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { - return ViewHolder( - LayoutInflater.from(context).inflate(R.layout.item_point_list_rv, parent, false) - ) - } - - @SuppressLint("NotifyDataSetChanged") - fun setRefreshData(dataRows: MutableList) { - this.dataRows.clear() - this.dataRows.addAll(dataRows) - notifyDataSetChanged() - multipleSelected.clear() - selectedItems.clear() - } - - override fun onBindViewHolder(holder: ViewHolder, position: Int) { - val item = dataRows[position] - holder.setText(R.id.stepNameView, "步骤 ${item.step}") - .setText(R.id.hAngleView, "水平角度 ${item.hAngle}°") - .setText(R.id.vAngleView, "垂直角度 ${item.vAngle}°") - - val linearLayout = holder.itemView.findViewById(R.id.rootView) - //item背景色 - if (position % 2 == 0) { - linearLayout.setBackgroundColor(Color.parseColor("#C8E3F4")) - } else { - linearLayout.setBackgroundColor(R.color.backgroundColor.convertColor(context)) - } - - holder.itemView.isSelected = multipleSelected.contains(position) - holder.itemView.setOnClickListener { - if (multipleSelected.contains(position)) { - multipleSelected.remove(position) - selectedItems.remove(dataRows[position]) - holder.itemView.isSelected = false - } else { - multipleSelected.add(position) - selectedItems.add(dataRows[position]) - holder.itemView.isSelected = true - } - - itemCheckedListener?.onItemChecked(position, selectedItems) - } - } - - private var itemCheckedListener: OnItemCheckedListener? = null - - interface OnItemCheckedListener { - fun onItemChecked(position: Int, items: ArrayList) - } - - fun setOnItemCheckedListener(listener: OnItemCheckedListener) { - itemCheckedListener = listener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/endoscope/bean/CameraPointBean.java b/app/src/main/java/com/casic/endoscope/bean/CameraPointBean.java deleted file mode 100644 index 3a20d82..0000000 --- a/app/src/main/java/com/casic/endoscope/bean/CameraPointBean.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.casic.endoscope.bean; - -import org.greenrobot.greendao.annotation.Entity; -import org.greenrobot.greendao.annotation.Generated; -import org.greenrobot.greendao.annotation.Id; - -/** - * 必须是java,不能是kt - */ -@Entity -public class CameraPointBean { - - @Id(autoincrement = true) - private Long id;//主键自增 - - private int step;//步骤序号 - private int hAngle;//水平角度 - private int vAngle;//垂直角度 - - @Generated(hash = 1436018650) - public CameraPointBean(Long id, int step, int hAngle, int vAngle) { - this.id = id; - this.step = step; - this.hAngle = hAngle; - this.vAngle = vAngle; - } - - @Generated(hash = 44086073) - public CameraPointBean() { - } - - public Long getId() { - return this.id; - } - - public void setId(Long id) { - this.id = id; - } - - public int getStep() { - return this.step; - } - - public void setStep(int step) { - this.step = step; - } - - public int getHAngle() { - return this.hAngle; - } - - public void setHAngle(int hAngle) { - this.hAngle = hAngle; - } - - public int getVAngle() { - return this.vAngle; - } - - public void setVAngle(int vAngle) { - this.vAngle = vAngle; - } -} diff --git a/app/src/main/java/com/casic/endoscope/bean/GasValueBean.java b/app/src/main/java/com/casic/endoscope/bean/GasValueBean.java new file mode 100644 index 0000000..6537b9a --- /dev/null +++ b/app/src/main/java/com/casic/endoscope/bean/GasValueBean.java @@ -0,0 +1,63 @@ +package com.casic.endoscope.bean; + +import org.greenrobot.greendao.annotation.Entity; +import org.greenrobot.greendao.annotation.Generated; +import org.greenrobot.greendao.annotation.Id; + +/** + * 必须是java,不能是kt + * 甲烷浓度表结构 + */ +@Entity +public class GasValueBean { + @Id(autoincrement = true) + private Long id;//主键自增 + + private String time;//采集浓度的时间 + private int value;//采集的浓度 + private String location;//浓度采集点位置 + + @Generated(hash = 663679791) + public GasValueBean(Long id, String time, int value, String location) { + this.id = id; + this.time = time; + this.value = value; + this.location = location; + } + + @Generated(hash = 291409217) + public GasValueBean() { + } + + public Long getId() { + return this.id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getTime() { + return this.time; + } + + public void setTime(String time) { + this.time = time; + } + + public int getValue() { + return this.value; + } + + public void setValue(int value) { + this.value = value; + } + + public String getLocation() { + return this.location; + } + + public void setLocation(String location) { + this.location = location; + } +} diff --git a/app/src/main/java/com/casic/endoscope/greendao/CameraPointBeanDao.java b/app/src/main/java/com/casic/endoscope/greendao/CameraPointBeanDao.java deleted file mode 100644 index 11bc932..0000000 --- a/app/src/main/java/com/casic/endoscope/greendao/CameraPointBeanDao.java +++ /dev/null @@ -1,138 +0,0 @@ -package com.casic.endoscope.greendao; - -import android.database.Cursor; -import android.database.sqlite.SQLiteStatement; - -import com.casic.endoscope.bean.CameraPointBean; - -import org.greenrobot.greendao.AbstractDao; -import org.greenrobot.greendao.Property; -import org.greenrobot.greendao.database.Database; -import org.greenrobot.greendao.database.DatabaseStatement; -import org.greenrobot.greendao.internal.DaoConfig; - -// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. - -/** - * DAO for table "CAMERA_POINT_BEAN". - */ -public class CameraPointBeanDao extends AbstractDao { - - public static final String TABLENAME = "CAMERA_POINT_BEAN"; - - /** - * Properties of entity CameraPointBean.
- * Can be used for QueryBuilder and for referencing column names. - */ - public static class Properties { - public final static Property Id = new Property(0, Long.class, "id", true, "_id"); - public final static Property Step = new Property(1, int.class, "step", false, "STEP"); - public final static Property HAngle = new Property(2, int.class, "hAngle", false, "H_ANGLE"); - public final static Property VAngle = new Property(3, int.class, "vAngle", false, "V_ANGLE"); - } - - - public CameraPointBeanDao(DaoConfig config) { - super(config); - } - - public CameraPointBeanDao(DaoConfig config, DaoSession daoSession) { - super(config, daoSession); - } - - /** - * Creates the underlying database table. - */ - public static void createTable(Database db, boolean ifNotExists) { - String constraint = ifNotExists ? "IF NOT EXISTS " : ""; - db.execSQL("CREATE TABLE " + constraint + "\"CAMERA_POINT_BEAN\" (" + // - "\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id - "\"STEP\" INTEGER NOT NULL ," + // 1: step - "\"H_ANGLE\" INTEGER NOT NULL ," + // 2: hAngle - "\"V_ANGLE\" INTEGER NOT NULL );"); // 3: vAngle - } - - /** - * Drops the underlying database table. - */ - public static void dropTable(Database db, boolean ifExists) { - String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"CAMERA_POINT_BEAN\""; - db.execSQL(sql); - } - - @Override - protected final void bindValues(DatabaseStatement stmt, CameraPointBean entity) { - stmt.clearBindings(); - - Long id = entity.getId(); - if (id != null) { - stmt.bindLong(1, id); - } - stmt.bindLong(2, entity.getStep()); - stmt.bindLong(3, entity.getHAngle()); - stmt.bindLong(4, entity.getVAngle()); - } - - @Override - protected final void bindValues(SQLiteStatement stmt, CameraPointBean entity) { - stmt.clearBindings(); - - Long id = entity.getId(); - if (id != null) { - stmt.bindLong(1, id); - } - stmt.bindLong(2, entity.getStep()); - stmt.bindLong(3, entity.getHAngle()); - stmt.bindLong(4, entity.getVAngle()); - } - - @Override - public Long readKey(Cursor cursor, int offset) { - return cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0); - } - - @Override - public CameraPointBean readEntity(Cursor cursor, int offset) { - CameraPointBean entity = new CameraPointBean( // - cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id - cursor.getInt(offset + 1), // step - cursor.getInt(offset + 2), // hAngle - cursor.getInt(offset + 3) // vAngle - ); - return entity; - } - - @Override - public void readEntity(Cursor cursor, CameraPointBean entity, int offset) { - entity.setId(cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0)); - entity.setStep(cursor.getInt(offset + 1)); - entity.setHAngle(cursor.getInt(offset + 2)); - entity.setVAngle(cursor.getInt(offset + 3)); - } - - @Override - protected final Long updateKeyAfterInsert(CameraPointBean entity, long rowId) { - entity.setId(rowId); - return rowId; - } - - @Override - public Long getKey(CameraPointBean entity) { - if (entity != null) { - return entity.getId(); - } else { - return null; - } - } - - @Override - public boolean hasKey(CameraPointBean entity) { - return entity.getId() != null; - } - - @Override - protected final boolean isEntityUpdateable() { - return true; - } - -} diff --git a/app/src/main/java/com/casic/endoscope/greendao/DaoMaster.java b/app/src/main/java/com/casic/endoscope/greendao/DaoMaster.java index 5d4fa30..a455fd0 100644 --- a/app/src/main/java/com/casic/endoscope/greendao/DaoMaster.java +++ b/app/src/main/java/com/casic/endoscope/greendao/DaoMaster.java @@ -13,25 +13,20 @@ // THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. - /** * Master of DAO (schema version 1): knows all DAOs. */ public class DaoMaster extends AbstractDaoMaster { public static final int SCHEMA_VERSION = 1; - /** - * Creates underlying database table using DAOs. - */ + /** Creates underlying database table using DAOs. */ public static void createAllTables(Database db, boolean ifNotExists) { - CameraPointBeanDao.createTable(db, ifNotExists); + GasValueBeanDao.createTable(db, ifNotExists); } - /** - * Drops underlying database table using DAOs. - */ + /** Drops underlying database table using DAOs. */ public static void dropAllTables(Database db, boolean ifExists) { - CameraPointBeanDao.dropTable(db, ifExists); + GasValueBeanDao.dropTable(db, ifExists); } /** @@ -50,7 +45,7 @@ public DaoMaster(Database db) { super(db, SCHEMA_VERSION); - registerDaoClass(CameraPointBeanDao.class); + registerDaoClass(GasValueBeanDao.class); } public DaoSession newSession() { @@ -80,9 +75,7 @@ } } - /** - * WARNING: Drops all table on Upgrade! Use only during development. - */ + /** WARNING: Drops all table on Upgrade! Use only during development. */ public static class DevOpenHelper extends OpenHelper { public DevOpenHelper(Context context, String name) { super(context, name); diff --git a/app/src/main/java/com/casic/endoscope/greendao/DaoSession.java b/app/src/main/java/com/casic/endoscope/greendao/DaoSession.java index ed2f9c0..259243d 100644 --- a/app/src/main/java/com/casic/endoscope/greendao/DaoSession.java +++ b/app/src/main/java/com/casic/endoscope/greendao/DaoSession.java @@ -1,6 +1,6 @@ package com.casic.endoscope.greendao; -import com.casic.endoscope.bean.CameraPointBean; +import com.casic.endoscope.bean.GasValueBean; import org.greenrobot.greendao.AbstractDao; import org.greenrobot.greendao.AbstractDaoSession; @@ -19,28 +19,28 @@ */ public class DaoSession extends AbstractDaoSession { - private final DaoConfig cameraPointBeanDaoConfig; + private final DaoConfig gasValueBeanDaoConfig; - private final CameraPointBeanDao cameraPointBeanDao; + private final GasValueBeanDao gasValueBeanDao; public DaoSession(Database db, IdentityScopeType type, Map>, DaoConfig> daoConfigMap) { super(db); - cameraPointBeanDaoConfig = daoConfigMap.get(CameraPointBeanDao.class).clone(); - cameraPointBeanDaoConfig.initIdentityScope(type); + gasValueBeanDaoConfig = daoConfigMap.get(GasValueBeanDao.class).clone(); + gasValueBeanDaoConfig.initIdentityScope(type); - cameraPointBeanDao = new CameraPointBeanDao(cameraPointBeanDaoConfig, this); + gasValueBeanDao = new GasValueBeanDao(gasValueBeanDaoConfig, this); - registerDao(CameraPointBean.class, cameraPointBeanDao); + registerDao(GasValueBean.class, gasValueBeanDao); } public void clear() { - cameraPointBeanDaoConfig.clearIdentityScope(); + gasValueBeanDaoConfig.clearIdentityScope(); } - public CameraPointBeanDao getCameraPointBeanDao() { - return cameraPointBeanDao; + public GasValueBeanDao getGasValueBeanDao() { + return gasValueBeanDao; } } diff --git a/app/src/main/java/com/casic/endoscope/greendao/GasValueBeanDao.java b/app/src/main/java/com/casic/endoscope/greendao/GasValueBeanDao.java new file mode 100644 index 0000000..5149375 --- /dev/null +++ b/app/src/main/java/com/casic/endoscope/greendao/GasValueBeanDao.java @@ -0,0 +1,149 @@ +package com.casic.endoscope.greendao; + +import android.database.Cursor; +import android.database.sqlite.SQLiteStatement; + +import com.casic.endoscope.bean.GasValueBean; + +import org.greenrobot.greendao.AbstractDao; +import org.greenrobot.greendao.Property; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.database.DatabaseStatement; +import org.greenrobot.greendao.internal.DaoConfig; + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. +/** + * DAO for table "GAS_VALUE_BEAN". +*/ +public class GasValueBeanDao extends AbstractDao { + + public static final String TABLENAME = "GAS_VALUE_BEAN"; + + /** + * Properties of entity GasValueBean.
+ * Can be used for QueryBuilder and for referencing column names. + */ + public static class Properties { + public final static Property Id = new Property(0, Long.class, "id", true, "_id"); + public final static Property Time = new Property(1, String.class, "time", false, "TIME"); + public final static Property Value = new Property(2, int.class, "value", false, "VALUE"); + public final static Property Location = new Property(3, String.class, "location", false, "LOCATION"); + } + + + public GasValueBeanDao(DaoConfig config) { + super(config); + } + + public GasValueBeanDao(DaoConfig config, DaoSession daoSession) { + super(config, daoSession); + } + + /** Creates the underlying database table. */ + public static void createTable(Database db, boolean ifNotExists) { + String constraint = ifNotExists? "IF NOT EXISTS ": ""; + db.execSQL("CREATE TABLE " + constraint + "\"GAS_VALUE_BEAN\" (" + // + "\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id + "\"TIME\" TEXT," + // 1: time + "\"VALUE\" INTEGER NOT NULL ," + // 2: value + "\"LOCATION\" TEXT);"); // 3: location + } + + /** Drops the underlying database table. */ + public static void dropTable(Database db, boolean ifExists) { + String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"GAS_VALUE_BEAN\""; + db.execSQL(sql); + } + + @Override + protected final void bindValues(DatabaseStatement stmt, GasValueBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String time = entity.getTime(); + if (time != null) { + stmt.bindString(2, time); + } + stmt.bindLong(3, entity.getValue()); + + String location = entity.getLocation(); + if (location != null) { + stmt.bindString(4, location); + } + } + + @Override + protected final void bindValues(SQLiteStatement stmt, GasValueBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String time = entity.getTime(); + if (time != null) { + stmt.bindString(2, time); + } + stmt.bindLong(3, entity.getValue()); + + String location = entity.getLocation(); + if (location != null) { + stmt.bindString(4, location); + } + } + + @Override + public Long readKey(Cursor cursor, int offset) { + return cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0); + } + + @Override + public GasValueBean readEntity(Cursor cursor, int offset) { + GasValueBean entity = new GasValueBean( // + cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id + cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // time + cursor.getInt(offset + 2), // value + cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3) // location + ); + return entity; + } + + @Override + public void readEntity(Cursor cursor, GasValueBean entity, int offset) { + entity.setId(cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0)); + entity.setTime(cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1)); + entity.setValue(cursor.getInt(offset + 2)); + entity.setLocation(cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3)); + } + + @Override + protected final Long updateKeyAfterInsert(GasValueBean entity, long rowId) { + entity.setId(rowId); + return rowId; + } + + @Override + public Long getKey(GasValueBean entity) { + if(entity != null) { + return entity.getId(); + } else { + return null; + } + } + + @Override + public boolean hasKey(GasValueBean entity) { + return entity.getId() != null; + } + + @Override + protected final boolean isEntityUpdateable() { + return true; + } + +} diff --git a/app/src/main/java/com/casic/endoscope/utils/DataBaseManager.kt b/app/src/main/java/com/casic/endoscope/utils/DataBaseManager.kt index a593a5b..c683db1 100644 --- a/app/src/main/java/com/casic/endoscope/utils/DataBaseManager.kt +++ b/app/src/main/java/com/casic/endoscope/utils/DataBaseManager.kt @@ -1,8 +1,6 @@ package com.casic.endoscope.utils import com.casic.endoscope.base.BaseApplication -import com.casic.endoscope.bean.CameraPointBean -import com.casic.endoscope.greendao.CameraPointBeanDao class DataBaseManager private constructor() { @@ -13,31 +11,5 @@ } } - private var cameraPointDao = BaseApplication.get().getDaoSession().cameraPointBeanDao - - fun cacheCameraPoint(step: Int, h: Int, v: Int) { - val bean = CameraPointBean() - bean.step = step - bean.hAngle = h - bean.vAngle = v - cameraPointDao.insert(bean) - } - - fun deleteCameraPoints(beans: MutableList) { - beans.forEach { - cameraPointDao.delete(it) - } - } - - fun deleteAllCameraPoint() { - cameraPointDao.deleteAll() - } - - fun queryCameraPointById(id: Long): CameraPointBean { - return cameraPointDao.queryBuilder() - .where(CameraPointBeanDao.Properties.Id.eq(id)) - .unique() - } - - fun loadAllCameraPoint(): MutableList = cameraPointDao.loadAll() + private var gasValueBeanDao = BaseApplication.get().getDaoSession().gasValueBeanDao } \ No newline at end of file diff --git a/app/src/main/java/com/casic/endoscope/utils/EndoscopeDevOpenHelper.kt b/app/src/main/java/com/casic/endoscope/utils/EndoscopeDevOpenHelper.kt index 507b1ff..fd87f0f 100644 --- a/app/src/main/java/com/casic/endoscope/utils/EndoscopeDevOpenHelper.kt +++ b/app/src/main/java/com/casic/endoscope/utils/EndoscopeDevOpenHelper.kt @@ -2,8 +2,8 @@ import android.content.Context import android.database.sqlite.SQLiteDatabase.CursorFactory -import com.casic.endoscope.greendao.CameraPointBeanDao import com.casic.endoscope.greendao.DaoMaster +import com.casic.endoscope.greendao.GasValueBeanDao import com.github.yuweiguocn.library.greendao.MigrationHelper import com.github.yuweiguocn.library.greendao.MigrationHelper.ReCreateAllTableListener import org.greenrobot.greendao.database.Database @@ -22,7 +22,7 @@ DaoMaster.dropAllTables(db, ifExists) } }, - CameraPointBeanDao::class.java + GasValueBeanDao::class.java ) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/endoscope/view/MainActivity.kt b/app/src/main/java/com/casic/endoscope/view/MainActivity.kt index 0fe757e..c4509b0 100644 --- a/app/src/main/java/com/casic/endoscope/view/MainActivity.kt +++ b/app/src/main/java/com/casic/endoscope/view/MainActivity.kt @@ -15,8 +15,6 @@ import android.view.SurfaceHolder import android.view.View import androidx.lifecycle.lifecycleScope -import com.casic.endoscope.adapter.CameraPointAdapter -import com.casic.endoscope.bean.CameraPointBean import com.casic.endoscope.databinding.ActivityMainBinding import com.casic.endoscope.extensions.check import com.casic.endoscope.extensions.convertValue @@ -28,14 +26,12 @@ import com.casic.endoscope.extensions.init import com.casic.endoscope.extensions.toTime import com.casic.endoscope.service.VideoTranscodeService -import com.casic.endoscope.utils.DataBaseManager import com.casic.endoscope.utils.ProjectConstant import com.casic.endoscope.utils.ble.BleDeviceManager import com.casic.endoscope.utils.ble.OnDeviceConnectListener import com.casic.endoscope.utils.ble.OnDeviceDiscoveredListener import com.casic.endoscope.utils.hk.MessageCodeHub import com.casic.endoscope.utils.hk.SDKGuider -import com.casic.endoscope.widgets.AddCameraPointDialog import com.casic.endoscope.widgets.BluetoothDeviceDialog import com.casic.endoscope.widgets.LineChartMarkerView import com.github.mikephil.charting.data.Entry @@ -55,10 +51,8 @@ import com.pengxh.kt.lite.extensions.timestampToTime import com.pengxh.kt.lite.utils.LoadingDialogHub import com.pengxh.kt.lite.utils.WeakReferenceHandler -import com.pengxh.kt.lite.widget.SteeringWheelView import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch -import kotlinx.coroutines.withContext import java.text.SimpleDateFormat import java.util.Date import java.util.Locale @@ -101,17 +95,11 @@ //焦距按钮是否已松开 private var isScaleButtonUp = true - //是否拍照成功 - private var isCaptureSuccess = true - private var timer: Timer? = null private var timerTask: TimerTask? = null private var seconds = 0L - private var dataBeans: MutableList = ArrayList() - private var selectedItems: MutableList = ArrayList() private var inputVideoPath = "" private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var dataAdapter: CameraPointAdapter private lateinit var serviceIntent: Intent private lateinit var dataSet: LineDataSet private lateinit var lineData: LineData @@ -123,8 +111,6 @@ override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) - dataBeans = DataBaseManager.get.loadAllCameraPoint() - //显示数据 weakReferenceHandler.sendEmptyMessage(messageCode) @@ -147,13 +133,7 @@ override fun handleMessage(msg: Message): Boolean { if (msg.what == messageCode) { //绑定数据 - dataAdapter = CameraPointAdapter(this, dataBeans) - binding.recyclerView.adapter = dataAdapter - dataAdapter.setOnItemCheckedListener(object : CameraPointAdapter.OnItemCheckedListener { - override fun onItemChecked(position: Int, items: ArrayList) { - selectedItems = items - } - }) + } return true } @@ -209,6 +189,180 @@ } } + binding.upScaleButton.setOnTouchListener { _, event -> + when (event.action) { + MotionEvent.ACTION_DOWN -> { + if (isPreviewSuccess && isScaleButtonUp) { + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_IN, 0) + isScaleButtonUp = false + } + } + + MotionEvent.ACTION_UP -> { + isScaleButtonUp = true + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_IN, 1) + } + } + false + } + + binding.downScaleButton.setOnTouchListener { _, event -> + when (event.action) { + MotionEvent.ACTION_DOWN -> { + if (isPreviewSuccess && isScaleButtonUp) { + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_OUT, 0) + isScaleButtonUp = false + } + } + + MotionEvent.ACTION_UP -> { + isScaleButtonUp = true + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_OUT, 1) + } + } + false + } + + binding.topButton.setOnTouchListener { _, motionEvent -> + when (motionEvent.action) { + MotionEvent.ACTION_DOWN -> { + if (isPreviewSuccess && isActionUp) { + hkSDK.NET_DVR_PTZControlWithSpeed( + previewHandle, PTZCommand.TILT_UP, 0, selectedSpeed + ) + isActionUp = false + } + } + + MotionEvent.ACTION_UP -> { + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.TILT_UP, 1) + isActionUp = true + } + } + false + } + + binding.centerButton.setOnClickListener { + if (!isPreviewSuccess) { + val deviceItem = SDKGuider.sdkGuider.devManageGuider.DeviceItem() + deviceItem.szDevName = "" + deviceItem.devNetInfo = SDKGuider.sdkGuider.devManageGuider.DevNetInfo( + ProjectConstant.HK_NET_IP, + ProjectConstant.HK_NET_PORT, + ProjectConstant.HK_NET_USERNAME, + ProjectConstant.HK_NET_PASSWORD + ) + if (deviceItem.szDevName.isEmpty()) { + deviceItem.szDevName = deviceItem.devNetInfo.szIp + } + val loginV40Jna = SDKGuider.sdkGuider.devManageGuider.login_v40_jna( + deviceItem.szDevName, deviceItem.devNetInfo + ) + if (loginV40Jna) { + //配置设备通道 + try { + val deviceInfo = SDKGuider.sdkGuider.devManageGuider.devList[0] + returnUserId = deviceInfo.szUserId + + aChannelNum = + deviceInfo.deviceInfoV40_jna.struDeviceV30.byChanNum.toInt() + startAChannel = + deviceInfo.deviceInfoV40_jna.struDeviceV30.byStartChan.toInt() + + dChannelNum = + deviceInfo.deviceInfoV40_jna.struDeviceV30.byIPChanNum + deviceInfo.deviceInfoV40_jna.struDeviceV30.byHighDChanNum * 256 + startDChannel = + deviceInfo.deviceInfoV40_jna.struDeviceV30.byStartChan.toInt() + + var iAnalogStartChan = startAChannel + var iDigitalStartChan = startDChannel + + val channelList = ArrayList() + + for (i in 0 until aChannelNum) { + channelList.add("ACamera_$iAnalogStartChan") + iAnalogStartChan++ + } + + for (i in 0 until dChannelNum) { + channelList.add("DCamera_$iDigitalStartChan") + iDigitalStartChan++ + } + selectChannel = Integer.valueOf(channelList[0].getChannel()) + + val streamList = ArrayList() + streamList.add("main_stream") + streamList.add("sub_stream") + streamList.add("third_stream") + + //开始预览 + if (previewHandle != -1) { + SDKGuider.sdkGuider.devPreviewGuider.RealPlay_Stop_jni(previewHandle) + } + val strutPlayInfo = NET_DVR_PREVIEWINFO() + strutPlayInfo.lChannel = selectChannel + strutPlayInfo.dwStreamType = 1 + strutPlayInfo.bBlocked = 1 + strutPlayInfo.hHwnd = binding.surfaceView.holder + previewHandle = SDKGuider.sdkGuider.devPreviewGuider.RealPlay_V40_jni( + returnUserId, strutPlayInfo, null + ) + if (previewHandle < 0) { + Log.d(kTag, "initEvent: Err:${MessageCodeHub.getErrorCode()}") + return@setOnClickListener + } + isPreviewSuccess = true + "预览开启成功".show(context) + //开始计时 + timer = Timer() + timerTask = object : TimerTask() { + override fun run() { + seconds++ + lifecycleScope.launch(Dispatchers.Main) { + binding.runningTimeView.text = seconds.toTime() + } + } + } + timer?.schedule(timerTask, 0, 1000) + } catch (e: IndexOutOfBoundsException) { + e.printStackTrace() + "设备未正常连接,无法开启预览".show(context) + } + } else { + "设备登陆失败".show(context) + } + } else { + if (!SDKGuider.sdkGuider.devPreviewGuider.RealPlay_Stop_jni(previewHandle)) { + return@setOnClickListener + } + previewHandle = -1 + isPreviewSuccess = false + "预览关闭成功".show(context) + //停止计时 + timerTask?.cancel() + timer?.cancel() + } + } + + binding.bottomButton.setOnTouchListener { _, motionEvent -> + when (motionEvent.action) { + MotionEvent.ACTION_DOWN -> { + if (isPreviewSuccess && isActionUp) { + hkSDK.NET_DVR_PTZControlWithSpeed( + previewHandle, PTZCommand.TILT_DOWN, 0, selectedSpeed + ) + isActionUp = false + } + } + + MotionEvent.ACTION_UP -> { + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.TILT_DOWN, 1) + isActionUp = true + } + } + false + } + //单张拍照 binding.imageButton.setOnClickListener { if (isPreviewSuccess) { @@ -252,278 +406,8 @@ true } - //连续拍照 - binding.multipleImageButton.setOnClickListener { - if (dataBeans.isEmpty()) { - "请先设置连续拍照步骤".show(this) - return@setOnClickListener - } - if (isPreviewSuccess) { - lifecycleScope.launch(Dispatchers.IO) { - dataBeans.forEach { - //再拍照 - if (isCaptureSuccess) { - isCaptureSuccess = false - - //先执行角度 - executeAngle(it.hAngle, it.vAngle) - - withContext(Dispatchers.Main) { - "抓取步骤${it.step}画面".show(context) - } - - val strJpeg = NET_DVR_JPEGPARA() - strJpeg.wPicQuality = 1 - strJpeg.wPicSize = 2 - - val imagePath = - "/${createImageFileDir()}/${timeFormat.format(Date())}.png" - hkSDK.NET_DVR_CaptureJPEGPicture( - returnUserId, selectChannel, strJpeg, imagePath - ) - - isCaptureSuccess = MessageCodeHub.getErrorCode() == 0 - } - } - withContext(Dispatchers.Main) { - "连续抓取画面完成".show(context) - } - } - } else { - "摄像头预览未打开,无法拍照".show(this) - } - } - - binding.addButton.setOnClickListener { - val step = if (dataBeans.isEmpty()) { - 0 - } else { - dataBeans.last().step - } - AddCameraPointDialog.Builder().setContext(this).setLastStep(step) - .setNegativeButton("取消").setPositiveButton("添加") - .setOnDialogButtonClickListener(object : - AddCameraPointDialog.OnDialogButtonClickListener { - override fun onConfirmClick(step: Int, hAngle: Int, vAngle: Int) { - DataBaseManager.get.cacheCameraPoint(step, hAngle, vAngle) - dataBeans = DataBaseManager.get.loadAllCameraPoint() - dataAdapter.setRefreshData(dataBeans) - } - - override fun onCancelClick() { - - } - }).build().show() - } - - binding.deleteButton.setOnClickListener { - if (selectedItems.isEmpty()) { - "请先选择要删除的步骤".show(this) - return@setOnClickListener - } - DataBaseManager.get.deleteCameraPoints(selectedItems) - dataBeans = DataBaseManager.get.loadAllCameraPoint() - dataAdapter.setRefreshData(dataBeans) - selectedItems.clear() - } - - binding.steeringWheelView.setOnWheelTouchListener(object : - SteeringWheelView.OnWheelTouchListener { - override fun onCenterClicked() { - if (!isPreviewSuccess) { - val deviceItem = SDKGuider.sdkGuider.devManageGuider.DeviceItem() - deviceItem.szDevName = "" - deviceItem.devNetInfo = SDKGuider.sdkGuider.devManageGuider.DevNetInfo( - ProjectConstant.HK_NET_IP, - ProjectConstant.HK_NET_PORT, - ProjectConstant.HK_NET_USERNAME, - ProjectConstant.HK_NET_PASSWORD - ) - if (deviceItem.szDevName.isEmpty()) { - deviceItem.szDevName = deviceItem.devNetInfo.szIp - } - val loginV40Jna = SDKGuider.sdkGuider.devManageGuider.login_v40_jna( - deviceItem.szDevName, deviceItem.devNetInfo - ) - if (loginV40Jna) { - //配置设备通道 - try { - val deviceInfo = SDKGuider.sdkGuider.devManageGuider.devList[0] - returnUserId = deviceInfo.szUserId - - aChannelNum = - deviceInfo.deviceInfoV40_jna.struDeviceV30.byChanNum.toInt() - startAChannel = - deviceInfo.deviceInfoV40_jna.struDeviceV30.byStartChan.toInt() - - dChannelNum = - deviceInfo.deviceInfoV40_jna.struDeviceV30.byIPChanNum + deviceInfo.deviceInfoV40_jna.struDeviceV30.byHighDChanNum * 256 - startDChannel = - deviceInfo.deviceInfoV40_jna.struDeviceV30.byStartChan.toInt() - - var iAnalogStartChan = startAChannel - var iDigitalStartChan = startDChannel - - val channelList = ArrayList() - - for (i in 0 until aChannelNum) { - channelList.add("ACamera_$iAnalogStartChan") - iAnalogStartChan++ - } - - for (i in 0 until dChannelNum) { - channelList.add("DCamera_$iDigitalStartChan") - iDigitalStartChan++ - } - selectChannel = Integer.valueOf(channelList[0].getChannel()) - - val streamList = ArrayList() - streamList.add("main_stream") - streamList.add("sub_stream") - streamList.add("third_stream") - - //开始预览 - if (previewHandle != -1) { - SDKGuider.sdkGuider.devPreviewGuider.RealPlay_Stop_jni(previewHandle) - } - val strutPlayInfo = NET_DVR_PREVIEWINFO() - strutPlayInfo.lChannel = selectChannel - strutPlayInfo.dwStreamType = 1 - strutPlayInfo.bBlocked = 1 - strutPlayInfo.hHwnd = binding.surfaceView.holder - previewHandle = SDKGuider.sdkGuider.devPreviewGuider.RealPlay_V40_jni( - returnUserId, strutPlayInfo, null - ) - if (previewHandle < 0) { - Log.d(kTag, "initEvent: Err:${MessageCodeHub.getErrorCode()}") - return - } - isPreviewSuccess = true - "预览开启成功".show(context) - //开始计时 - timer = Timer() - timerTask = object : TimerTask() { - override fun run() { - seconds++ - lifecycleScope.launch(Dispatchers.Main) { - binding.runningTimeView.text = seconds.toTime() - } - } - } - timer?.schedule(timerTask, 0, 1000) - } catch (e: IndexOutOfBoundsException) { - e.printStackTrace() - "设备未正常连接,无法开启预览".show(context) - } - } else { - "设备登陆失败".show(context) - } - } else { - if (!SDKGuider.sdkGuider.devPreviewGuider.RealPlay_Stop_jni(previewHandle)) { - return - } - previewHandle = -1 - isPreviewSuccess = false - "预览关闭成功".show(context) - //停止计时 - timerTask?.cancel() - timer?.cancel() - } - } - - override fun onLeftTurn() { - if (isPreviewSuccess && isActionUp) { - hkSDK.NET_DVR_PTZControlWithSpeed( - previewHandle, PTZCommand.PAN_LEFT, 0, selectedSpeed - ) - isActionUp = false - } - } - - override fun onTopTurn() { - if (isPreviewSuccess && isActionUp) { - hkSDK.NET_DVR_PTZControlWithSpeed( - previewHandle, PTZCommand.TILT_UP, 0, selectedSpeed - ) - isActionUp = false - } - } - - override fun onRightTurn() { - if (isPreviewSuccess && isActionUp) { - hkSDK.NET_DVR_PTZControlWithSpeed( - previewHandle, PTZCommand.PAN_RIGHT, 0, selectedSpeed - ) - isActionUp = false - } - } - - override fun onBottomTurn() { - if (isPreviewSuccess && isActionUp) { - hkSDK.NET_DVR_PTZControlWithSpeed( - previewHandle, PTZCommand.TILT_DOWN, 0, selectedSpeed - ) - isActionUp = false - } - } - - override fun onActionTurnUp(dir: SteeringWheelView.Direction) { - when (dir) { - SteeringWheelView.Direction.LEFT -> { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.PAN_LEFT, 1) - isActionUp = true - } - - SteeringWheelView.Direction.TOP -> { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.TILT_UP, 1) - isActionUp = true - } - - SteeringWheelView.Direction.RIGHT -> { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.PAN_RIGHT, 1) - isActionUp = true - } - - SteeringWheelView.Direction.BOTTOM -> { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.TILT_DOWN, 1) - isActionUp = true - } - } - } - }) - - binding.upScaleButton.setOnTouchListener { _, event -> - when (event.action) { - MotionEvent.ACTION_DOWN -> { - if (isPreviewSuccess && isScaleButtonUp) { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_IN, 0) - isScaleButtonUp = false - } - } - - MotionEvent.ACTION_UP -> { - isScaleButtonUp = true - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_IN, 1) - } - } - false - } - - binding.downScaleButton.setOnTouchListener { _, event -> - when (event.action) { - MotionEvent.ACTION_DOWN -> { - if (isPreviewSuccess && isScaleButtonUp) { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_OUT, 0) - isScaleButtonUp = false - } - } - - MotionEvent.ACTION_UP -> { - isScaleButtonUp = true - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_OUT, 1) - } - } - false + binding.resetButton.setOnClickListener { + executeAngle(0, 0) } } diff --git a/app/src/main/res/drawable/bg_solid_layout_blue_10.xml b/app/src/main/res/drawable/bg_solid_layout_blue_10.xml new file mode 100644 index 0000000..b7e06e3 --- /dev/null +++ b/app/src/main/res/drawable/bg_solid_layout_blue_10.xml @@ -0,0 +1,7 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_stroke_layout_blue_10.xml b/app/src/main/res/drawable/bg_stroke_layout_blue_10.xml deleted file mode 100644 index d6f55c9..0000000 --- a/app/src/main/res/drawable/bg_stroke_layout_blue_10.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_camera.xml b/app/src/main/res/drawable/ic_camera.xml new file mode 100644 index 0000000..1f7ab22 --- /dev/null +++ b/app/src/main/res/drawable/ic_camera.xml @@ -0,0 +1,15 @@ + + + + + diff --git a/app/src/main/res/drawable/ic_dir_down.xml b/app/src/main/res/drawable/ic_dir_down.xml deleted file mode 100644 index e6807dc..0000000 --- a/app/src/main/res/drawable/ic_dir_down.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_dir_left.xml b/app/src/main/res/drawable/ic_dir_left.xml deleted file mode 100644 index 12b2237..0000000 --- a/app/src/main/res/drawable/ic_dir_left.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_dir_right.xml b/app/src/main/res/drawable/ic_dir_right.xml deleted file mode 100644 index 96539aa..0000000 --- a/app/src/main/res/drawable/ic_dir_right.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_dir_up.xml b/app/src/main/res/drawable/ic_dir_up.xml deleted file mode 100644 index e7a153e..0000000 --- a/app/src/main/res/drawable/ic_dir_up.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_down.xml b/app/src/main/res/drawable/ic_down.xml new file mode 100644 index 0000000..9fcd974 --- /dev/null +++ b/app/src/main/res/drawable/ic_down.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_minus.xml b/app/src/main/res/drawable/ic_minus.xml index a399f5f..2942b80 100644 --- a/app/src/main/res/drawable/ic_minus.xml +++ b/app/src/main/res/drawable/ic_minus.xml @@ -1,9 +1,9 @@ + android:fillColor="#1875F0" + android:pathData="M864,480H160c-17.6,0 -32,14.4 -32,32s14.4,32 32,32h704c17.6,0 32,-14.4 32,-32s-14.4,-32 -32,-32z" /> diff --git a/app/src/main/res/drawable/ic_off.xml b/app/src/main/res/drawable/ic_off.xml new file mode 100644 index 0000000..1940f16 --- /dev/null +++ b/app/src/main/res/drawable/ic_off.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/ic_picture.xml b/app/src/main/res/drawable/ic_picture.xml new file mode 100644 index 0000000..a781b4c --- /dev/null +++ b/app/src/main/res/drawable/ic_picture.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/ic_plus.xml b/app/src/main/res/drawable/ic_plus.xml index 49d9fb0..db4941d 100644 --- a/app/src/main/res/drawable/ic_plus.xml +++ b/app/src/main/res/drawable/ic_plus.xml @@ -1,9 +1,9 @@ + android:fillColor="#1875F0" + android:pathData="M864,480H544V160c0,-17.6 -14.4,-32 -32,-32s-32,14.4 -32,32v320H160c-17.6,0 -32,14.4 -32,32s14.4,32 32,32h320v320c0,17.6 14.4,32 32,32s32,-14.4 32,-32V544h320c17.6,0 32,-14.4 32,-32s-14.4,-32 -32,-32z" /> diff --git a/app/src/main/res/drawable/ic_reset.xml b/app/src/main/res/drawable/ic_reset.xml new file mode 100644 index 0000000..969dccd --- /dev/null +++ b/app/src/main/res/drawable/ic_reset.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/build.gradle b/app/build.gradle index c2a2c53..64d4d0c 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -72,7 +72,7 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5.4' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.8' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.cardview:cardview:1.0.0' diff --git a/app/src/main/java/com/casic/endoscope/adapter/CameraPointAdapter.kt b/app/src/main/java/com/casic/endoscope/adapter/CameraPointAdapter.kt deleted file mode 100644 index fe404b2..0000000 --- a/app/src/main/java/com/casic/endoscope/adapter/CameraPointAdapter.kt +++ /dev/null @@ -1,78 +0,0 @@ -package com.casic.endoscope.adapter - -import android.annotation.SuppressLint -import android.content.Context -import android.graphics.Color -import android.view.LayoutInflater -import android.view.ViewGroup -import android.widget.LinearLayout -import androidx.recyclerview.widget.RecyclerView -import com.casic.endoscope.R -import com.casic.endoscope.bean.CameraPointBean -import com.pengxh.kt.lite.adapter.ViewHolder -import com.pengxh.kt.lite.extensions.convertColor - -class CameraPointAdapter( - private val context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var multipleSelected = mutableSetOf() - private var selectedItems = ArrayList() - - override fun getItemCount(): Int = dataRows.size - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { - return ViewHolder( - LayoutInflater.from(context).inflate(R.layout.item_point_list_rv, parent, false) - ) - } - - @SuppressLint("NotifyDataSetChanged") - fun setRefreshData(dataRows: MutableList) { - this.dataRows.clear() - this.dataRows.addAll(dataRows) - notifyDataSetChanged() - multipleSelected.clear() - selectedItems.clear() - } - - override fun onBindViewHolder(holder: ViewHolder, position: Int) { - val item = dataRows[position] - holder.setText(R.id.stepNameView, "步骤 ${item.step}") - .setText(R.id.hAngleView, "水平角度 ${item.hAngle}°") - .setText(R.id.vAngleView, "垂直角度 ${item.vAngle}°") - - val linearLayout = holder.itemView.findViewById(R.id.rootView) - //item背景色 - if (position % 2 == 0) { - linearLayout.setBackgroundColor(Color.parseColor("#C8E3F4")) - } else { - linearLayout.setBackgroundColor(R.color.backgroundColor.convertColor(context)) - } - - holder.itemView.isSelected = multipleSelected.contains(position) - holder.itemView.setOnClickListener { - if (multipleSelected.contains(position)) { - multipleSelected.remove(position) - selectedItems.remove(dataRows[position]) - holder.itemView.isSelected = false - } else { - multipleSelected.add(position) - selectedItems.add(dataRows[position]) - holder.itemView.isSelected = true - } - - itemCheckedListener?.onItemChecked(position, selectedItems) - } - } - - private var itemCheckedListener: OnItemCheckedListener? = null - - interface OnItemCheckedListener { - fun onItemChecked(position: Int, items: ArrayList) - } - - fun setOnItemCheckedListener(listener: OnItemCheckedListener) { - itemCheckedListener = listener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/endoscope/bean/CameraPointBean.java b/app/src/main/java/com/casic/endoscope/bean/CameraPointBean.java deleted file mode 100644 index 3a20d82..0000000 --- a/app/src/main/java/com/casic/endoscope/bean/CameraPointBean.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.casic.endoscope.bean; - -import org.greenrobot.greendao.annotation.Entity; -import org.greenrobot.greendao.annotation.Generated; -import org.greenrobot.greendao.annotation.Id; - -/** - * 必须是java,不能是kt - */ -@Entity -public class CameraPointBean { - - @Id(autoincrement = true) - private Long id;//主键自增 - - private int step;//步骤序号 - private int hAngle;//水平角度 - private int vAngle;//垂直角度 - - @Generated(hash = 1436018650) - public CameraPointBean(Long id, int step, int hAngle, int vAngle) { - this.id = id; - this.step = step; - this.hAngle = hAngle; - this.vAngle = vAngle; - } - - @Generated(hash = 44086073) - public CameraPointBean() { - } - - public Long getId() { - return this.id; - } - - public void setId(Long id) { - this.id = id; - } - - public int getStep() { - return this.step; - } - - public void setStep(int step) { - this.step = step; - } - - public int getHAngle() { - return this.hAngle; - } - - public void setHAngle(int hAngle) { - this.hAngle = hAngle; - } - - public int getVAngle() { - return this.vAngle; - } - - public void setVAngle(int vAngle) { - this.vAngle = vAngle; - } -} diff --git a/app/src/main/java/com/casic/endoscope/bean/GasValueBean.java b/app/src/main/java/com/casic/endoscope/bean/GasValueBean.java new file mode 100644 index 0000000..6537b9a --- /dev/null +++ b/app/src/main/java/com/casic/endoscope/bean/GasValueBean.java @@ -0,0 +1,63 @@ +package com.casic.endoscope.bean; + +import org.greenrobot.greendao.annotation.Entity; +import org.greenrobot.greendao.annotation.Generated; +import org.greenrobot.greendao.annotation.Id; + +/** + * 必须是java,不能是kt + * 甲烷浓度表结构 + */ +@Entity +public class GasValueBean { + @Id(autoincrement = true) + private Long id;//主键自增 + + private String time;//采集浓度的时间 + private int value;//采集的浓度 + private String location;//浓度采集点位置 + + @Generated(hash = 663679791) + public GasValueBean(Long id, String time, int value, String location) { + this.id = id; + this.time = time; + this.value = value; + this.location = location; + } + + @Generated(hash = 291409217) + public GasValueBean() { + } + + public Long getId() { + return this.id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getTime() { + return this.time; + } + + public void setTime(String time) { + this.time = time; + } + + public int getValue() { + return this.value; + } + + public void setValue(int value) { + this.value = value; + } + + public String getLocation() { + return this.location; + } + + public void setLocation(String location) { + this.location = location; + } +} diff --git a/app/src/main/java/com/casic/endoscope/greendao/CameraPointBeanDao.java b/app/src/main/java/com/casic/endoscope/greendao/CameraPointBeanDao.java deleted file mode 100644 index 11bc932..0000000 --- a/app/src/main/java/com/casic/endoscope/greendao/CameraPointBeanDao.java +++ /dev/null @@ -1,138 +0,0 @@ -package com.casic.endoscope.greendao; - -import android.database.Cursor; -import android.database.sqlite.SQLiteStatement; - -import com.casic.endoscope.bean.CameraPointBean; - -import org.greenrobot.greendao.AbstractDao; -import org.greenrobot.greendao.Property; -import org.greenrobot.greendao.database.Database; -import org.greenrobot.greendao.database.DatabaseStatement; -import org.greenrobot.greendao.internal.DaoConfig; - -// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. - -/** - * DAO for table "CAMERA_POINT_BEAN". - */ -public class CameraPointBeanDao extends AbstractDao { - - public static final String TABLENAME = "CAMERA_POINT_BEAN"; - - /** - * Properties of entity CameraPointBean.
- * Can be used for QueryBuilder and for referencing column names. - */ - public static class Properties { - public final static Property Id = new Property(0, Long.class, "id", true, "_id"); - public final static Property Step = new Property(1, int.class, "step", false, "STEP"); - public final static Property HAngle = new Property(2, int.class, "hAngle", false, "H_ANGLE"); - public final static Property VAngle = new Property(3, int.class, "vAngle", false, "V_ANGLE"); - } - - - public CameraPointBeanDao(DaoConfig config) { - super(config); - } - - public CameraPointBeanDao(DaoConfig config, DaoSession daoSession) { - super(config, daoSession); - } - - /** - * Creates the underlying database table. - */ - public static void createTable(Database db, boolean ifNotExists) { - String constraint = ifNotExists ? "IF NOT EXISTS " : ""; - db.execSQL("CREATE TABLE " + constraint + "\"CAMERA_POINT_BEAN\" (" + // - "\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id - "\"STEP\" INTEGER NOT NULL ," + // 1: step - "\"H_ANGLE\" INTEGER NOT NULL ," + // 2: hAngle - "\"V_ANGLE\" INTEGER NOT NULL );"); // 3: vAngle - } - - /** - * Drops the underlying database table. - */ - public static void dropTable(Database db, boolean ifExists) { - String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"CAMERA_POINT_BEAN\""; - db.execSQL(sql); - } - - @Override - protected final void bindValues(DatabaseStatement stmt, CameraPointBean entity) { - stmt.clearBindings(); - - Long id = entity.getId(); - if (id != null) { - stmt.bindLong(1, id); - } - stmt.bindLong(2, entity.getStep()); - stmt.bindLong(3, entity.getHAngle()); - stmt.bindLong(4, entity.getVAngle()); - } - - @Override - protected final void bindValues(SQLiteStatement stmt, CameraPointBean entity) { - stmt.clearBindings(); - - Long id = entity.getId(); - if (id != null) { - stmt.bindLong(1, id); - } - stmt.bindLong(2, entity.getStep()); - stmt.bindLong(3, entity.getHAngle()); - stmt.bindLong(4, entity.getVAngle()); - } - - @Override - public Long readKey(Cursor cursor, int offset) { - return cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0); - } - - @Override - public CameraPointBean readEntity(Cursor cursor, int offset) { - CameraPointBean entity = new CameraPointBean( // - cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id - cursor.getInt(offset + 1), // step - cursor.getInt(offset + 2), // hAngle - cursor.getInt(offset + 3) // vAngle - ); - return entity; - } - - @Override - public void readEntity(Cursor cursor, CameraPointBean entity, int offset) { - entity.setId(cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0)); - entity.setStep(cursor.getInt(offset + 1)); - entity.setHAngle(cursor.getInt(offset + 2)); - entity.setVAngle(cursor.getInt(offset + 3)); - } - - @Override - protected final Long updateKeyAfterInsert(CameraPointBean entity, long rowId) { - entity.setId(rowId); - return rowId; - } - - @Override - public Long getKey(CameraPointBean entity) { - if (entity != null) { - return entity.getId(); - } else { - return null; - } - } - - @Override - public boolean hasKey(CameraPointBean entity) { - return entity.getId() != null; - } - - @Override - protected final boolean isEntityUpdateable() { - return true; - } - -} diff --git a/app/src/main/java/com/casic/endoscope/greendao/DaoMaster.java b/app/src/main/java/com/casic/endoscope/greendao/DaoMaster.java index 5d4fa30..a455fd0 100644 --- a/app/src/main/java/com/casic/endoscope/greendao/DaoMaster.java +++ b/app/src/main/java/com/casic/endoscope/greendao/DaoMaster.java @@ -13,25 +13,20 @@ // THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. - /** * Master of DAO (schema version 1): knows all DAOs. */ public class DaoMaster extends AbstractDaoMaster { public static final int SCHEMA_VERSION = 1; - /** - * Creates underlying database table using DAOs. - */ + /** Creates underlying database table using DAOs. */ public static void createAllTables(Database db, boolean ifNotExists) { - CameraPointBeanDao.createTable(db, ifNotExists); + GasValueBeanDao.createTable(db, ifNotExists); } - /** - * Drops underlying database table using DAOs. - */ + /** Drops underlying database table using DAOs. */ public static void dropAllTables(Database db, boolean ifExists) { - CameraPointBeanDao.dropTable(db, ifExists); + GasValueBeanDao.dropTable(db, ifExists); } /** @@ -50,7 +45,7 @@ public DaoMaster(Database db) { super(db, SCHEMA_VERSION); - registerDaoClass(CameraPointBeanDao.class); + registerDaoClass(GasValueBeanDao.class); } public DaoSession newSession() { @@ -80,9 +75,7 @@ } } - /** - * WARNING: Drops all table on Upgrade! Use only during development. - */ + /** WARNING: Drops all table on Upgrade! Use only during development. */ public static class DevOpenHelper extends OpenHelper { public DevOpenHelper(Context context, String name) { super(context, name); diff --git a/app/src/main/java/com/casic/endoscope/greendao/DaoSession.java b/app/src/main/java/com/casic/endoscope/greendao/DaoSession.java index ed2f9c0..259243d 100644 --- a/app/src/main/java/com/casic/endoscope/greendao/DaoSession.java +++ b/app/src/main/java/com/casic/endoscope/greendao/DaoSession.java @@ -1,6 +1,6 @@ package com.casic.endoscope.greendao; -import com.casic.endoscope.bean.CameraPointBean; +import com.casic.endoscope.bean.GasValueBean; import org.greenrobot.greendao.AbstractDao; import org.greenrobot.greendao.AbstractDaoSession; @@ -19,28 +19,28 @@ */ public class DaoSession extends AbstractDaoSession { - private final DaoConfig cameraPointBeanDaoConfig; + private final DaoConfig gasValueBeanDaoConfig; - private final CameraPointBeanDao cameraPointBeanDao; + private final GasValueBeanDao gasValueBeanDao; public DaoSession(Database db, IdentityScopeType type, Map>, DaoConfig> daoConfigMap) { super(db); - cameraPointBeanDaoConfig = daoConfigMap.get(CameraPointBeanDao.class).clone(); - cameraPointBeanDaoConfig.initIdentityScope(type); + gasValueBeanDaoConfig = daoConfigMap.get(GasValueBeanDao.class).clone(); + gasValueBeanDaoConfig.initIdentityScope(type); - cameraPointBeanDao = new CameraPointBeanDao(cameraPointBeanDaoConfig, this); + gasValueBeanDao = new GasValueBeanDao(gasValueBeanDaoConfig, this); - registerDao(CameraPointBean.class, cameraPointBeanDao); + registerDao(GasValueBean.class, gasValueBeanDao); } public void clear() { - cameraPointBeanDaoConfig.clearIdentityScope(); + gasValueBeanDaoConfig.clearIdentityScope(); } - public CameraPointBeanDao getCameraPointBeanDao() { - return cameraPointBeanDao; + public GasValueBeanDao getGasValueBeanDao() { + return gasValueBeanDao; } } diff --git a/app/src/main/java/com/casic/endoscope/greendao/GasValueBeanDao.java b/app/src/main/java/com/casic/endoscope/greendao/GasValueBeanDao.java new file mode 100644 index 0000000..5149375 --- /dev/null +++ b/app/src/main/java/com/casic/endoscope/greendao/GasValueBeanDao.java @@ -0,0 +1,149 @@ +package com.casic.endoscope.greendao; + +import android.database.Cursor; +import android.database.sqlite.SQLiteStatement; + +import com.casic.endoscope.bean.GasValueBean; + +import org.greenrobot.greendao.AbstractDao; +import org.greenrobot.greendao.Property; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.database.DatabaseStatement; +import org.greenrobot.greendao.internal.DaoConfig; + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. +/** + * DAO for table "GAS_VALUE_BEAN". +*/ +public class GasValueBeanDao extends AbstractDao { + + public static final String TABLENAME = "GAS_VALUE_BEAN"; + + /** + * Properties of entity GasValueBean.
+ * Can be used for QueryBuilder and for referencing column names. + */ + public static class Properties { + public final static Property Id = new Property(0, Long.class, "id", true, "_id"); + public final static Property Time = new Property(1, String.class, "time", false, "TIME"); + public final static Property Value = new Property(2, int.class, "value", false, "VALUE"); + public final static Property Location = new Property(3, String.class, "location", false, "LOCATION"); + } + + + public GasValueBeanDao(DaoConfig config) { + super(config); + } + + public GasValueBeanDao(DaoConfig config, DaoSession daoSession) { + super(config, daoSession); + } + + /** Creates the underlying database table. */ + public static void createTable(Database db, boolean ifNotExists) { + String constraint = ifNotExists? "IF NOT EXISTS ": ""; + db.execSQL("CREATE TABLE " + constraint + "\"GAS_VALUE_BEAN\" (" + // + "\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id + "\"TIME\" TEXT," + // 1: time + "\"VALUE\" INTEGER NOT NULL ," + // 2: value + "\"LOCATION\" TEXT);"); // 3: location + } + + /** Drops the underlying database table. */ + public static void dropTable(Database db, boolean ifExists) { + String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"GAS_VALUE_BEAN\""; + db.execSQL(sql); + } + + @Override + protected final void bindValues(DatabaseStatement stmt, GasValueBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String time = entity.getTime(); + if (time != null) { + stmt.bindString(2, time); + } + stmt.bindLong(3, entity.getValue()); + + String location = entity.getLocation(); + if (location != null) { + stmt.bindString(4, location); + } + } + + @Override + protected final void bindValues(SQLiteStatement stmt, GasValueBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String time = entity.getTime(); + if (time != null) { + stmt.bindString(2, time); + } + stmt.bindLong(3, entity.getValue()); + + String location = entity.getLocation(); + if (location != null) { + stmt.bindString(4, location); + } + } + + @Override + public Long readKey(Cursor cursor, int offset) { + return cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0); + } + + @Override + public GasValueBean readEntity(Cursor cursor, int offset) { + GasValueBean entity = new GasValueBean( // + cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id + cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // time + cursor.getInt(offset + 2), // value + cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3) // location + ); + return entity; + } + + @Override + public void readEntity(Cursor cursor, GasValueBean entity, int offset) { + entity.setId(cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0)); + entity.setTime(cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1)); + entity.setValue(cursor.getInt(offset + 2)); + entity.setLocation(cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3)); + } + + @Override + protected final Long updateKeyAfterInsert(GasValueBean entity, long rowId) { + entity.setId(rowId); + return rowId; + } + + @Override + public Long getKey(GasValueBean entity) { + if(entity != null) { + return entity.getId(); + } else { + return null; + } + } + + @Override + public boolean hasKey(GasValueBean entity) { + return entity.getId() != null; + } + + @Override + protected final boolean isEntityUpdateable() { + return true; + } + +} diff --git a/app/src/main/java/com/casic/endoscope/utils/DataBaseManager.kt b/app/src/main/java/com/casic/endoscope/utils/DataBaseManager.kt index a593a5b..c683db1 100644 --- a/app/src/main/java/com/casic/endoscope/utils/DataBaseManager.kt +++ b/app/src/main/java/com/casic/endoscope/utils/DataBaseManager.kt @@ -1,8 +1,6 @@ package com.casic.endoscope.utils import com.casic.endoscope.base.BaseApplication -import com.casic.endoscope.bean.CameraPointBean -import com.casic.endoscope.greendao.CameraPointBeanDao class DataBaseManager private constructor() { @@ -13,31 +11,5 @@ } } - private var cameraPointDao = BaseApplication.get().getDaoSession().cameraPointBeanDao - - fun cacheCameraPoint(step: Int, h: Int, v: Int) { - val bean = CameraPointBean() - bean.step = step - bean.hAngle = h - bean.vAngle = v - cameraPointDao.insert(bean) - } - - fun deleteCameraPoints(beans: MutableList) { - beans.forEach { - cameraPointDao.delete(it) - } - } - - fun deleteAllCameraPoint() { - cameraPointDao.deleteAll() - } - - fun queryCameraPointById(id: Long): CameraPointBean { - return cameraPointDao.queryBuilder() - .where(CameraPointBeanDao.Properties.Id.eq(id)) - .unique() - } - - fun loadAllCameraPoint(): MutableList = cameraPointDao.loadAll() + private var gasValueBeanDao = BaseApplication.get().getDaoSession().gasValueBeanDao } \ No newline at end of file diff --git a/app/src/main/java/com/casic/endoscope/utils/EndoscopeDevOpenHelper.kt b/app/src/main/java/com/casic/endoscope/utils/EndoscopeDevOpenHelper.kt index 507b1ff..fd87f0f 100644 --- a/app/src/main/java/com/casic/endoscope/utils/EndoscopeDevOpenHelper.kt +++ b/app/src/main/java/com/casic/endoscope/utils/EndoscopeDevOpenHelper.kt @@ -2,8 +2,8 @@ import android.content.Context import android.database.sqlite.SQLiteDatabase.CursorFactory -import com.casic.endoscope.greendao.CameraPointBeanDao import com.casic.endoscope.greendao.DaoMaster +import com.casic.endoscope.greendao.GasValueBeanDao import com.github.yuweiguocn.library.greendao.MigrationHelper import com.github.yuweiguocn.library.greendao.MigrationHelper.ReCreateAllTableListener import org.greenrobot.greendao.database.Database @@ -22,7 +22,7 @@ DaoMaster.dropAllTables(db, ifExists) } }, - CameraPointBeanDao::class.java + GasValueBeanDao::class.java ) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/endoscope/view/MainActivity.kt b/app/src/main/java/com/casic/endoscope/view/MainActivity.kt index 0fe757e..c4509b0 100644 --- a/app/src/main/java/com/casic/endoscope/view/MainActivity.kt +++ b/app/src/main/java/com/casic/endoscope/view/MainActivity.kt @@ -15,8 +15,6 @@ import android.view.SurfaceHolder import android.view.View import androidx.lifecycle.lifecycleScope -import com.casic.endoscope.adapter.CameraPointAdapter -import com.casic.endoscope.bean.CameraPointBean import com.casic.endoscope.databinding.ActivityMainBinding import com.casic.endoscope.extensions.check import com.casic.endoscope.extensions.convertValue @@ -28,14 +26,12 @@ import com.casic.endoscope.extensions.init import com.casic.endoscope.extensions.toTime import com.casic.endoscope.service.VideoTranscodeService -import com.casic.endoscope.utils.DataBaseManager import com.casic.endoscope.utils.ProjectConstant import com.casic.endoscope.utils.ble.BleDeviceManager import com.casic.endoscope.utils.ble.OnDeviceConnectListener import com.casic.endoscope.utils.ble.OnDeviceDiscoveredListener import com.casic.endoscope.utils.hk.MessageCodeHub import com.casic.endoscope.utils.hk.SDKGuider -import com.casic.endoscope.widgets.AddCameraPointDialog import com.casic.endoscope.widgets.BluetoothDeviceDialog import com.casic.endoscope.widgets.LineChartMarkerView import com.github.mikephil.charting.data.Entry @@ -55,10 +51,8 @@ import com.pengxh.kt.lite.extensions.timestampToTime import com.pengxh.kt.lite.utils.LoadingDialogHub import com.pengxh.kt.lite.utils.WeakReferenceHandler -import com.pengxh.kt.lite.widget.SteeringWheelView import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch -import kotlinx.coroutines.withContext import java.text.SimpleDateFormat import java.util.Date import java.util.Locale @@ -101,17 +95,11 @@ //焦距按钮是否已松开 private var isScaleButtonUp = true - //是否拍照成功 - private var isCaptureSuccess = true - private var timer: Timer? = null private var timerTask: TimerTask? = null private var seconds = 0L - private var dataBeans: MutableList = ArrayList() - private var selectedItems: MutableList = ArrayList() private var inputVideoPath = "" private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var dataAdapter: CameraPointAdapter private lateinit var serviceIntent: Intent private lateinit var dataSet: LineDataSet private lateinit var lineData: LineData @@ -123,8 +111,6 @@ override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) - dataBeans = DataBaseManager.get.loadAllCameraPoint() - //显示数据 weakReferenceHandler.sendEmptyMessage(messageCode) @@ -147,13 +133,7 @@ override fun handleMessage(msg: Message): Boolean { if (msg.what == messageCode) { //绑定数据 - dataAdapter = CameraPointAdapter(this, dataBeans) - binding.recyclerView.adapter = dataAdapter - dataAdapter.setOnItemCheckedListener(object : CameraPointAdapter.OnItemCheckedListener { - override fun onItemChecked(position: Int, items: ArrayList) { - selectedItems = items - } - }) + } return true } @@ -209,6 +189,180 @@ } } + binding.upScaleButton.setOnTouchListener { _, event -> + when (event.action) { + MotionEvent.ACTION_DOWN -> { + if (isPreviewSuccess && isScaleButtonUp) { + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_IN, 0) + isScaleButtonUp = false + } + } + + MotionEvent.ACTION_UP -> { + isScaleButtonUp = true + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_IN, 1) + } + } + false + } + + binding.downScaleButton.setOnTouchListener { _, event -> + when (event.action) { + MotionEvent.ACTION_DOWN -> { + if (isPreviewSuccess && isScaleButtonUp) { + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_OUT, 0) + isScaleButtonUp = false + } + } + + MotionEvent.ACTION_UP -> { + isScaleButtonUp = true + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_OUT, 1) + } + } + false + } + + binding.topButton.setOnTouchListener { _, motionEvent -> + when (motionEvent.action) { + MotionEvent.ACTION_DOWN -> { + if (isPreviewSuccess && isActionUp) { + hkSDK.NET_DVR_PTZControlWithSpeed( + previewHandle, PTZCommand.TILT_UP, 0, selectedSpeed + ) + isActionUp = false + } + } + + MotionEvent.ACTION_UP -> { + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.TILT_UP, 1) + isActionUp = true + } + } + false + } + + binding.centerButton.setOnClickListener { + if (!isPreviewSuccess) { + val deviceItem = SDKGuider.sdkGuider.devManageGuider.DeviceItem() + deviceItem.szDevName = "" + deviceItem.devNetInfo = SDKGuider.sdkGuider.devManageGuider.DevNetInfo( + ProjectConstant.HK_NET_IP, + ProjectConstant.HK_NET_PORT, + ProjectConstant.HK_NET_USERNAME, + ProjectConstant.HK_NET_PASSWORD + ) + if (deviceItem.szDevName.isEmpty()) { + deviceItem.szDevName = deviceItem.devNetInfo.szIp + } + val loginV40Jna = SDKGuider.sdkGuider.devManageGuider.login_v40_jna( + deviceItem.szDevName, deviceItem.devNetInfo + ) + if (loginV40Jna) { + //配置设备通道 + try { + val deviceInfo = SDKGuider.sdkGuider.devManageGuider.devList[0] + returnUserId = deviceInfo.szUserId + + aChannelNum = + deviceInfo.deviceInfoV40_jna.struDeviceV30.byChanNum.toInt() + startAChannel = + deviceInfo.deviceInfoV40_jna.struDeviceV30.byStartChan.toInt() + + dChannelNum = + deviceInfo.deviceInfoV40_jna.struDeviceV30.byIPChanNum + deviceInfo.deviceInfoV40_jna.struDeviceV30.byHighDChanNum * 256 + startDChannel = + deviceInfo.deviceInfoV40_jna.struDeviceV30.byStartChan.toInt() + + var iAnalogStartChan = startAChannel + var iDigitalStartChan = startDChannel + + val channelList = ArrayList() + + for (i in 0 until aChannelNum) { + channelList.add("ACamera_$iAnalogStartChan") + iAnalogStartChan++ + } + + for (i in 0 until dChannelNum) { + channelList.add("DCamera_$iDigitalStartChan") + iDigitalStartChan++ + } + selectChannel = Integer.valueOf(channelList[0].getChannel()) + + val streamList = ArrayList() + streamList.add("main_stream") + streamList.add("sub_stream") + streamList.add("third_stream") + + //开始预览 + if (previewHandle != -1) { + SDKGuider.sdkGuider.devPreviewGuider.RealPlay_Stop_jni(previewHandle) + } + val strutPlayInfo = NET_DVR_PREVIEWINFO() + strutPlayInfo.lChannel = selectChannel + strutPlayInfo.dwStreamType = 1 + strutPlayInfo.bBlocked = 1 + strutPlayInfo.hHwnd = binding.surfaceView.holder + previewHandle = SDKGuider.sdkGuider.devPreviewGuider.RealPlay_V40_jni( + returnUserId, strutPlayInfo, null + ) + if (previewHandle < 0) { + Log.d(kTag, "initEvent: Err:${MessageCodeHub.getErrorCode()}") + return@setOnClickListener + } + isPreviewSuccess = true + "预览开启成功".show(context) + //开始计时 + timer = Timer() + timerTask = object : TimerTask() { + override fun run() { + seconds++ + lifecycleScope.launch(Dispatchers.Main) { + binding.runningTimeView.text = seconds.toTime() + } + } + } + timer?.schedule(timerTask, 0, 1000) + } catch (e: IndexOutOfBoundsException) { + e.printStackTrace() + "设备未正常连接,无法开启预览".show(context) + } + } else { + "设备登陆失败".show(context) + } + } else { + if (!SDKGuider.sdkGuider.devPreviewGuider.RealPlay_Stop_jni(previewHandle)) { + return@setOnClickListener + } + previewHandle = -1 + isPreviewSuccess = false + "预览关闭成功".show(context) + //停止计时 + timerTask?.cancel() + timer?.cancel() + } + } + + binding.bottomButton.setOnTouchListener { _, motionEvent -> + when (motionEvent.action) { + MotionEvent.ACTION_DOWN -> { + if (isPreviewSuccess && isActionUp) { + hkSDK.NET_DVR_PTZControlWithSpeed( + previewHandle, PTZCommand.TILT_DOWN, 0, selectedSpeed + ) + isActionUp = false + } + } + + MotionEvent.ACTION_UP -> { + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.TILT_DOWN, 1) + isActionUp = true + } + } + false + } + //单张拍照 binding.imageButton.setOnClickListener { if (isPreviewSuccess) { @@ -252,278 +406,8 @@ true } - //连续拍照 - binding.multipleImageButton.setOnClickListener { - if (dataBeans.isEmpty()) { - "请先设置连续拍照步骤".show(this) - return@setOnClickListener - } - if (isPreviewSuccess) { - lifecycleScope.launch(Dispatchers.IO) { - dataBeans.forEach { - //再拍照 - if (isCaptureSuccess) { - isCaptureSuccess = false - - //先执行角度 - executeAngle(it.hAngle, it.vAngle) - - withContext(Dispatchers.Main) { - "抓取步骤${it.step}画面".show(context) - } - - val strJpeg = NET_DVR_JPEGPARA() - strJpeg.wPicQuality = 1 - strJpeg.wPicSize = 2 - - val imagePath = - "/${createImageFileDir()}/${timeFormat.format(Date())}.png" - hkSDK.NET_DVR_CaptureJPEGPicture( - returnUserId, selectChannel, strJpeg, imagePath - ) - - isCaptureSuccess = MessageCodeHub.getErrorCode() == 0 - } - } - withContext(Dispatchers.Main) { - "连续抓取画面完成".show(context) - } - } - } else { - "摄像头预览未打开,无法拍照".show(this) - } - } - - binding.addButton.setOnClickListener { - val step = if (dataBeans.isEmpty()) { - 0 - } else { - dataBeans.last().step - } - AddCameraPointDialog.Builder().setContext(this).setLastStep(step) - .setNegativeButton("取消").setPositiveButton("添加") - .setOnDialogButtonClickListener(object : - AddCameraPointDialog.OnDialogButtonClickListener { - override fun onConfirmClick(step: Int, hAngle: Int, vAngle: Int) { - DataBaseManager.get.cacheCameraPoint(step, hAngle, vAngle) - dataBeans = DataBaseManager.get.loadAllCameraPoint() - dataAdapter.setRefreshData(dataBeans) - } - - override fun onCancelClick() { - - } - }).build().show() - } - - binding.deleteButton.setOnClickListener { - if (selectedItems.isEmpty()) { - "请先选择要删除的步骤".show(this) - return@setOnClickListener - } - DataBaseManager.get.deleteCameraPoints(selectedItems) - dataBeans = DataBaseManager.get.loadAllCameraPoint() - dataAdapter.setRefreshData(dataBeans) - selectedItems.clear() - } - - binding.steeringWheelView.setOnWheelTouchListener(object : - SteeringWheelView.OnWheelTouchListener { - override fun onCenterClicked() { - if (!isPreviewSuccess) { - val deviceItem = SDKGuider.sdkGuider.devManageGuider.DeviceItem() - deviceItem.szDevName = "" - deviceItem.devNetInfo = SDKGuider.sdkGuider.devManageGuider.DevNetInfo( - ProjectConstant.HK_NET_IP, - ProjectConstant.HK_NET_PORT, - ProjectConstant.HK_NET_USERNAME, - ProjectConstant.HK_NET_PASSWORD - ) - if (deviceItem.szDevName.isEmpty()) { - deviceItem.szDevName = deviceItem.devNetInfo.szIp - } - val loginV40Jna = SDKGuider.sdkGuider.devManageGuider.login_v40_jna( - deviceItem.szDevName, deviceItem.devNetInfo - ) - if (loginV40Jna) { - //配置设备通道 - try { - val deviceInfo = SDKGuider.sdkGuider.devManageGuider.devList[0] - returnUserId = deviceInfo.szUserId - - aChannelNum = - deviceInfo.deviceInfoV40_jna.struDeviceV30.byChanNum.toInt() - startAChannel = - deviceInfo.deviceInfoV40_jna.struDeviceV30.byStartChan.toInt() - - dChannelNum = - deviceInfo.deviceInfoV40_jna.struDeviceV30.byIPChanNum + deviceInfo.deviceInfoV40_jna.struDeviceV30.byHighDChanNum * 256 - startDChannel = - deviceInfo.deviceInfoV40_jna.struDeviceV30.byStartChan.toInt() - - var iAnalogStartChan = startAChannel - var iDigitalStartChan = startDChannel - - val channelList = ArrayList() - - for (i in 0 until aChannelNum) { - channelList.add("ACamera_$iAnalogStartChan") - iAnalogStartChan++ - } - - for (i in 0 until dChannelNum) { - channelList.add("DCamera_$iDigitalStartChan") - iDigitalStartChan++ - } - selectChannel = Integer.valueOf(channelList[0].getChannel()) - - val streamList = ArrayList() - streamList.add("main_stream") - streamList.add("sub_stream") - streamList.add("third_stream") - - //开始预览 - if (previewHandle != -1) { - SDKGuider.sdkGuider.devPreviewGuider.RealPlay_Stop_jni(previewHandle) - } - val strutPlayInfo = NET_DVR_PREVIEWINFO() - strutPlayInfo.lChannel = selectChannel - strutPlayInfo.dwStreamType = 1 - strutPlayInfo.bBlocked = 1 - strutPlayInfo.hHwnd = binding.surfaceView.holder - previewHandle = SDKGuider.sdkGuider.devPreviewGuider.RealPlay_V40_jni( - returnUserId, strutPlayInfo, null - ) - if (previewHandle < 0) { - Log.d(kTag, "initEvent: Err:${MessageCodeHub.getErrorCode()}") - return - } - isPreviewSuccess = true - "预览开启成功".show(context) - //开始计时 - timer = Timer() - timerTask = object : TimerTask() { - override fun run() { - seconds++ - lifecycleScope.launch(Dispatchers.Main) { - binding.runningTimeView.text = seconds.toTime() - } - } - } - timer?.schedule(timerTask, 0, 1000) - } catch (e: IndexOutOfBoundsException) { - e.printStackTrace() - "设备未正常连接,无法开启预览".show(context) - } - } else { - "设备登陆失败".show(context) - } - } else { - if (!SDKGuider.sdkGuider.devPreviewGuider.RealPlay_Stop_jni(previewHandle)) { - return - } - previewHandle = -1 - isPreviewSuccess = false - "预览关闭成功".show(context) - //停止计时 - timerTask?.cancel() - timer?.cancel() - } - } - - override fun onLeftTurn() { - if (isPreviewSuccess && isActionUp) { - hkSDK.NET_DVR_PTZControlWithSpeed( - previewHandle, PTZCommand.PAN_LEFT, 0, selectedSpeed - ) - isActionUp = false - } - } - - override fun onTopTurn() { - if (isPreviewSuccess && isActionUp) { - hkSDK.NET_DVR_PTZControlWithSpeed( - previewHandle, PTZCommand.TILT_UP, 0, selectedSpeed - ) - isActionUp = false - } - } - - override fun onRightTurn() { - if (isPreviewSuccess && isActionUp) { - hkSDK.NET_DVR_PTZControlWithSpeed( - previewHandle, PTZCommand.PAN_RIGHT, 0, selectedSpeed - ) - isActionUp = false - } - } - - override fun onBottomTurn() { - if (isPreviewSuccess && isActionUp) { - hkSDK.NET_DVR_PTZControlWithSpeed( - previewHandle, PTZCommand.TILT_DOWN, 0, selectedSpeed - ) - isActionUp = false - } - } - - override fun onActionTurnUp(dir: SteeringWheelView.Direction) { - when (dir) { - SteeringWheelView.Direction.LEFT -> { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.PAN_LEFT, 1) - isActionUp = true - } - - SteeringWheelView.Direction.TOP -> { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.TILT_UP, 1) - isActionUp = true - } - - SteeringWheelView.Direction.RIGHT -> { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.PAN_RIGHT, 1) - isActionUp = true - } - - SteeringWheelView.Direction.BOTTOM -> { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.TILT_DOWN, 1) - isActionUp = true - } - } - } - }) - - binding.upScaleButton.setOnTouchListener { _, event -> - when (event.action) { - MotionEvent.ACTION_DOWN -> { - if (isPreviewSuccess && isScaleButtonUp) { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_IN, 0) - isScaleButtonUp = false - } - } - - MotionEvent.ACTION_UP -> { - isScaleButtonUp = true - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_IN, 1) - } - } - false - } - - binding.downScaleButton.setOnTouchListener { _, event -> - when (event.action) { - MotionEvent.ACTION_DOWN -> { - if (isPreviewSuccess && isScaleButtonUp) { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_OUT, 0) - isScaleButtonUp = false - } - } - - MotionEvent.ACTION_UP -> { - isScaleButtonUp = true - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_OUT, 1) - } - } - false + binding.resetButton.setOnClickListener { + executeAngle(0, 0) } } diff --git a/app/src/main/res/drawable/bg_solid_layout_blue_10.xml b/app/src/main/res/drawable/bg_solid_layout_blue_10.xml new file mode 100644 index 0000000..b7e06e3 --- /dev/null +++ b/app/src/main/res/drawable/bg_solid_layout_blue_10.xml @@ -0,0 +1,7 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_stroke_layout_blue_10.xml b/app/src/main/res/drawable/bg_stroke_layout_blue_10.xml deleted file mode 100644 index d6f55c9..0000000 --- a/app/src/main/res/drawable/bg_stroke_layout_blue_10.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_camera.xml b/app/src/main/res/drawable/ic_camera.xml new file mode 100644 index 0000000..1f7ab22 --- /dev/null +++ b/app/src/main/res/drawable/ic_camera.xml @@ -0,0 +1,15 @@ + + + + + diff --git a/app/src/main/res/drawable/ic_dir_down.xml b/app/src/main/res/drawable/ic_dir_down.xml deleted file mode 100644 index e6807dc..0000000 --- a/app/src/main/res/drawable/ic_dir_down.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_dir_left.xml b/app/src/main/res/drawable/ic_dir_left.xml deleted file mode 100644 index 12b2237..0000000 --- a/app/src/main/res/drawable/ic_dir_left.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_dir_right.xml b/app/src/main/res/drawable/ic_dir_right.xml deleted file mode 100644 index 96539aa..0000000 --- a/app/src/main/res/drawable/ic_dir_right.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_dir_up.xml b/app/src/main/res/drawable/ic_dir_up.xml deleted file mode 100644 index e7a153e..0000000 --- a/app/src/main/res/drawable/ic_dir_up.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_down.xml b/app/src/main/res/drawable/ic_down.xml new file mode 100644 index 0000000..9fcd974 --- /dev/null +++ b/app/src/main/res/drawable/ic_down.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_minus.xml b/app/src/main/res/drawable/ic_minus.xml index a399f5f..2942b80 100644 --- a/app/src/main/res/drawable/ic_minus.xml +++ b/app/src/main/res/drawable/ic_minus.xml @@ -1,9 +1,9 @@ + android:fillColor="#1875F0" + android:pathData="M864,480H160c-17.6,0 -32,14.4 -32,32s14.4,32 32,32h704c17.6,0 32,-14.4 32,-32s-14.4,-32 -32,-32z" /> diff --git a/app/src/main/res/drawable/ic_off.xml b/app/src/main/res/drawable/ic_off.xml new file mode 100644 index 0000000..1940f16 --- /dev/null +++ b/app/src/main/res/drawable/ic_off.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/ic_picture.xml b/app/src/main/res/drawable/ic_picture.xml new file mode 100644 index 0000000..a781b4c --- /dev/null +++ b/app/src/main/res/drawable/ic_picture.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/ic_plus.xml b/app/src/main/res/drawable/ic_plus.xml index 49d9fb0..db4941d 100644 --- a/app/src/main/res/drawable/ic_plus.xml +++ b/app/src/main/res/drawable/ic_plus.xml @@ -1,9 +1,9 @@ + android:fillColor="#1875F0" + android:pathData="M864,480H544V160c0,-17.6 -14.4,-32 -32,-32s-32,14.4 -32,32v320H160c-17.6,0 -32,14.4 -32,32s14.4,32 32,32h320v320c0,17.6 14.4,32 32,32s32,-14.4 32,-32V544h320c17.6,0 32,-14.4 32,-32s-14.4,-32 -32,-32z" /> diff --git a/app/src/main/res/drawable/ic_reset.xml b/app/src/main/res/drawable/ic_reset.xml new file mode 100644 index 0000000..969dccd --- /dev/null +++ b/app/src/main/res/drawable/ic_reset.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_up.xml b/app/src/main/res/drawable/ic_up.xml new file mode 100644 index 0000000..3f4bca9 --- /dev/null +++ b/app/src/main/res/drawable/ic_up.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/build.gradle b/app/build.gradle index c2a2c53..64d4d0c 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -72,7 +72,7 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5.4' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.8' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.cardview:cardview:1.0.0' diff --git a/app/src/main/java/com/casic/endoscope/adapter/CameraPointAdapter.kt b/app/src/main/java/com/casic/endoscope/adapter/CameraPointAdapter.kt deleted file mode 100644 index fe404b2..0000000 --- a/app/src/main/java/com/casic/endoscope/adapter/CameraPointAdapter.kt +++ /dev/null @@ -1,78 +0,0 @@ -package com.casic.endoscope.adapter - -import android.annotation.SuppressLint -import android.content.Context -import android.graphics.Color -import android.view.LayoutInflater -import android.view.ViewGroup -import android.widget.LinearLayout -import androidx.recyclerview.widget.RecyclerView -import com.casic.endoscope.R -import com.casic.endoscope.bean.CameraPointBean -import com.pengxh.kt.lite.adapter.ViewHolder -import com.pengxh.kt.lite.extensions.convertColor - -class CameraPointAdapter( - private val context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var multipleSelected = mutableSetOf() - private var selectedItems = ArrayList() - - override fun getItemCount(): Int = dataRows.size - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { - return ViewHolder( - LayoutInflater.from(context).inflate(R.layout.item_point_list_rv, parent, false) - ) - } - - @SuppressLint("NotifyDataSetChanged") - fun setRefreshData(dataRows: MutableList) { - this.dataRows.clear() - this.dataRows.addAll(dataRows) - notifyDataSetChanged() - multipleSelected.clear() - selectedItems.clear() - } - - override fun onBindViewHolder(holder: ViewHolder, position: Int) { - val item = dataRows[position] - holder.setText(R.id.stepNameView, "步骤 ${item.step}") - .setText(R.id.hAngleView, "水平角度 ${item.hAngle}°") - .setText(R.id.vAngleView, "垂直角度 ${item.vAngle}°") - - val linearLayout = holder.itemView.findViewById(R.id.rootView) - //item背景色 - if (position % 2 == 0) { - linearLayout.setBackgroundColor(Color.parseColor("#C8E3F4")) - } else { - linearLayout.setBackgroundColor(R.color.backgroundColor.convertColor(context)) - } - - holder.itemView.isSelected = multipleSelected.contains(position) - holder.itemView.setOnClickListener { - if (multipleSelected.contains(position)) { - multipleSelected.remove(position) - selectedItems.remove(dataRows[position]) - holder.itemView.isSelected = false - } else { - multipleSelected.add(position) - selectedItems.add(dataRows[position]) - holder.itemView.isSelected = true - } - - itemCheckedListener?.onItemChecked(position, selectedItems) - } - } - - private var itemCheckedListener: OnItemCheckedListener? = null - - interface OnItemCheckedListener { - fun onItemChecked(position: Int, items: ArrayList) - } - - fun setOnItemCheckedListener(listener: OnItemCheckedListener) { - itemCheckedListener = listener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/endoscope/bean/CameraPointBean.java b/app/src/main/java/com/casic/endoscope/bean/CameraPointBean.java deleted file mode 100644 index 3a20d82..0000000 --- a/app/src/main/java/com/casic/endoscope/bean/CameraPointBean.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.casic.endoscope.bean; - -import org.greenrobot.greendao.annotation.Entity; -import org.greenrobot.greendao.annotation.Generated; -import org.greenrobot.greendao.annotation.Id; - -/** - * 必须是java,不能是kt - */ -@Entity -public class CameraPointBean { - - @Id(autoincrement = true) - private Long id;//主键自增 - - private int step;//步骤序号 - private int hAngle;//水平角度 - private int vAngle;//垂直角度 - - @Generated(hash = 1436018650) - public CameraPointBean(Long id, int step, int hAngle, int vAngle) { - this.id = id; - this.step = step; - this.hAngle = hAngle; - this.vAngle = vAngle; - } - - @Generated(hash = 44086073) - public CameraPointBean() { - } - - public Long getId() { - return this.id; - } - - public void setId(Long id) { - this.id = id; - } - - public int getStep() { - return this.step; - } - - public void setStep(int step) { - this.step = step; - } - - public int getHAngle() { - return this.hAngle; - } - - public void setHAngle(int hAngle) { - this.hAngle = hAngle; - } - - public int getVAngle() { - return this.vAngle; - } - - public void setVAngle(int vAngle) { - this.vAngle = vAngle; - } -} diff --git a/app/src/main/java/com/casic/endoscope/bean/GasValueBean.java b/app/src/main/java/com/casic/endoscope/bean/GasValueBean.java new file mode 100644 index 0000000..6537b9a --- /dev/null +++ b/app/src/main/java/com/casic/endoscope/bean/GasValueBean.java @@ -0,0 +1,63 @@ +package com.casic.endoscope.bean; + +import org.greenrobot.greendao.annotation.Entity; +import org.greenrobot.greendao.annotation.Generated; +import org.greenrobot.greendao.annotation.Id; + +/** + * 必须是java,不能是kt + * 甲烷浓度表结构 + */ +@Entity +public class GasValueBean { + @Id(autoincrement = true) + private Long id;//主键自增 + + private String time;//采集浓度的时间 + private int value;//采集的浓度 + private String location;//浓度采集点位置 + + @Generated(hash = 663679791) + public GasValueBean(Long id, String time, int value, String location) { + this.id = id; + this.time = time; + this.value = value; + this.location = location; + } + + @Generated(hash = 291409217) + public GasValueBean() { + } + + public Long getId() { + return this.id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getTime() { + return this.time; + } + + public void setTime(String time) { + this.time = time; + } + + public int getValue() { + return this.value; + } + + public void setValue(int value) { + this.value = value; + } + + public String getLocation() { + return this.location; + } + + public void setLocation(String location) { + this.location = location; + } +} diff --git a/app/src/main/java/com/casic/endoscope/greendao/CameraPointBeanDao.java b/app/src/main/java/com/casic/endoscope/greendao/CameraPointBeanDao.java deleted file mode 100644 index 11bc932..0000000 --- a/app/src/main/java/com/casic/endoscope/greendao/CameraPointBeanDao.java +++ /dev/null @@ -1,138 +0,0 @@ -package com.casic.endoscope.greendao; - -import android.database.Cursor; -import android.database.sqlite.SQLiteStatement; - -import com.casic.endoscope.bean.CameraPointBean; - -import org.greenrobot.greendao.AbstractDao; -import org.greenrobot.greendao.Property; -import org.greenrobot.greendao.database.Database; -import org.greenrobot.greendao.database.DatabaseStatement; -import org.greenrobot.greendao.internal.DaoConfig; - -// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. - -/** - * DAO for table "CAMERA_POINT_BEAN". - */ -public class CameraPointBeanDao extends AbstractDao { - - public static final String TABLENAME = "CAMERA_POINT_BEAN"; - - /** - * Properties of entity CameraPointBean.
- * Can be used for QueryBuilder and for referencing column names. - */ - public static class Properties { - public final static Property Id = new Property(0, Long.class, "id", true, "_id"); - public final static Property Step = new Property(1, int.class, "step", false, "STEP"); - public final static Property HAngle = new Property(2, int.class, "hAngle", false, "H_ANGLE"); - public final static Property VAngle = new Property(3, int.class, "vAngle", false, "V_ANGLE"); - } - - - public CameraPointBeanDao(DaoConfig config) { - super(config); - } - - public CameraPointBeanDao(DaoConfig config, DaoSession daoSession) { - super(config, daoSession); - } - - /** - * Creates the underlying database table. - */ - public static void createTable(Database db, boolean ifNotExists) { - String constraint = ifNotExists ? "IF NOT EXISTS " : ""; - db.execSQL("CREATE TABLE " + constraint + "\"CAMERA_POINT_BEAN\" (" + // - "\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id - "\"STEP\" INTEGER NOT NULL ," + // 1: step - "\"H_ANGLE\" INTEGER NOT NULL ," + // 2: hAngle - "\"V_ANGLE\" INTEGER NOT NULL );"); // 3: vAngle - } - - /** - * Drops the underlying database table. - */ - public static void dropTable(Database db, boolean ifExists) { - String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"CAMERA_POINT_BEAN\""; - db.execSQL(sql); - } - - @Override - protected final void bindValues(DatabaseStatement stmt, CameraPointBean entity) { - stmt.clearBindings(); - - Long id = entity.getId(); - if (id != null) { - stmt.bindLong(1, id); - } - stmt.bindLong(2, entity.getStep()); - stmt.bindLong(3, entity.getHAngle()); - stmt.bindLong(4, entity.getVAngle()); - } - - @Override - protected final void bindValues(SQLiteStatement stmt, CameraPointBean entity) { - stmt.clearBindings(); - - Long id = entity.getId(); - if (id != null) { - stmt.bindLong(1, id); - } - stmt.bindLong(2, entity.getStep()); - stmt.bindLong(3, entity.getHAngle()); - stmt.bindLong(4, entity.getVAngle()); - } - - @Override - public Long readKey(Cursor cursor, int offset) { - return cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0); - } - - @Override - public CameraPointBean readEntity(Cursor cursor, int offset) { - CameraPointBean entity = new CameraPointBean( // - cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id - cursor.getInt(offset + 1), // step - cursor.getInt(offset + 2), // hAngle - cursor.getInt(offset + 3) // vAngle - ); - return entity; - } - - @Override - public void readEntity(Cursor cursor, CameraPointBean entity, int offset) { - entity.setId(cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0)); - entity.setStep(cursor.getInt(offset + 1)); - entity.setHAngle(cursor.getInt(offset + 2)); - entity.setVAngle(cursor.getInt(offset + 3)); - } - - @Override - protected final Long updateKeyAfterInsert(CameraPointBean entity, long rowId) { - entity.setId(rowId); - return rowId; - } - - @Override - public Long getKey(CameraPointBean entity) { - if (entity != null) { - return entity.getId(); - } else { - return null; - } - } - - @Override - public boolean hasKey(CameraPointBean entity) { - return entity.getId() != null; - } - - @Override - protected final boolean isEntityUpdateable() { - return true; - } - -} diff --git a/app/src/main/java/com/casic/endoscope/greendao/DaoMaster.java b/app/src/main/java/com/casic/endoscope/greendao/DaoMaster.java index 5d4fa30..a455fd0 100644 --- a/app/src/main/java/com/casic/endoscope/greendao/DaoMaster.java +++ b/app/src/main/java/com/casic/endoscope/greendao/DaoMaster.java @@ -13,25 +13,20 @@ // THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. - /** * Master of DAO (schema version 1): knows all DAOs. */ public class DaoMaster extends AbstractDaoMaster { public static final int SCHEMA_VERSION = 1; - /** - * Creates underlying database table using DAOs. - */ + /** Creates underlying database table using DAOs. */ public static void createAllTables(Database db, boolean ifNotExists) { - CameraPointBeanDao.createTable(db, ifNotExists); + GasValueBeanDao.createTable(db, ifNotExists); } - /** - * Drops underlying database table using DAOs. - */ + /** Drops underlying database table using DAOs. */ public static void dropAllTables(Database db, boolean ifExists) { - CameraPointBeanDao.dropTable(db, ifExists); + GasValueBeanDao.dropTable(db, ifExists); } /** @@ -50,7 +45,7 @@ public DaoMaster(Database db) { super(db, SCHEMA_VERSION); - registerDaoClass(CameraPointBeanDao.class); + registerDaoClass(GasValueBeanDao.class); } public DaoSession newSession() { @@ -80,9 +75,7 @@ } } - /** - * WARNING: Drops all table on Upgrade! Use only during development. - */ + /** WARNING: Drops all table on Upgrade! Use only during development. */ public static class DevOpenHelper extends OpenHelper { public DevOpenHelper(Context context, String name) { super(context, name); diff --git a/app/src/main/java/com/casic/endoscope/greendao/DaoSession.java b/app/src/main/java/com/casic/endoscope/greendao/DaoSession.java index ed2f9c0..259243d 100644 --- a/app/src/main/java/com/casic/endoscope/greendao/DaoSession.java +++ b/app/src/main/java/com/casic/endoscope/greendao/DaoSession.java @@ -1,6 +1,6 @@ package com.casic.endoscope.greendao; -import com.casic.endoscope.bean.CameraPointBean; +import com.casic.endoscope.bean.GasValueBean; import org.greenrobot.greendao.AbstractDao; import org.greenrobot.greendao.AbstractDaoSession; @@ -19,28 +19,28 @@ */ public class DaoSession extends AbstractDaoSession { - private final DaoConfig cameraPointBeanDaoConfig; + private final DaoConfig gasValueBeanDaoConfig; - private final CameraPointBeanDao cameraPointBeanDao; + private final GasValueBeanDao gasValueBeanDao; public DaoSession(Database db, IdentityScopeType type, Map>, DaoConfig> daoConfigMap) { super(db); - cameraPointBeanDaoConfig = daoConfigMap.get(CameraPointBeanDao.class).clone(); - cameraPointBeanDaoConfig.initIdentityScope(type); + gasValueBeanDaoConfig = daoConfigMap.get(GasValueBeanDao.class).clone(); + gasValueBeanDaoConfig.initIdentityScope(type); - cameraPointBeanDao = new CameraPointBeanDao(cameraPointBeanDaoConfig, this); + gasValueBeanDao = new GasValueBeanDao(gasValueBeanDaoConfig, this); - registerDao(CameraPointBean.class, cameraPointBeanDao); + registerDao(GasValueBean.class, gasValueBeanDao); } public void clear() { - cameraPointBeanDaoConfig.clearIdentityScope(); + gasValueBeanDaoConfig.clearIdentityScope(); } - public CameraPointBeanDao getCameraPointBeanDao() { - return cameraPointBeanDao; + public GasValueBeanDao getGasValueBeanDao() { + return gasValueBeanDao; } } diff --git a/app/src/main/java/com/casic/endoscope/greendao/GasValueBeanDao.java b/app/src/main/java/com/casic/endoscope/greendao/GasValueBeanDao.java new file mode 100644 index 0000000..5149375 --- /dev/null +++ b/app/src/main/java/com/casic/endoscope/greendao/GasValueBeanDao.java @@ -0,0 +1,149 @@ +package com.casic.endoscope.greendao; + +import android.database.Cursor; +import android.database.sqlite.SQLiteStatement; + +import com.casic.endoscope.bean.GasValueBean; + +import org.greenrobot.greendao.AbstractDao; +import org.greenrobot.greendao.Property; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.database.DatabaseStatement; +import org.greenrobot.greendao.internal.DaoConfig; + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. +/** + * DAO for table "GAS_VALUE_BEAN". +*/ +public class GasValueBeanDao extends AbstractDao { + + public static final String TABLENAME = "GAS_VALUE_BEAN"; + + /** + * Properties of entity GasValueBean.
+ * Can be used for QueryBuilder and for referencing column names. + */ + public static class Properties { + public final static Property Id = new Property(0, Long.class, "id", true, "_id"); + public final static Property Time = new Property(1, String.class, "time", false, "TIME"); + public final static Property Value = new Property(2, int.class, "value", false, "VALUE"); + public final static Property Location = new Property(3, String.class, "location", false, "LOCATION"); + } + + + public GasValueBeanDao(DaoConfig config) { + super(config); + } + + public GasValueBeanDao(DaoConfig config, DaoSession daoSession) { + super(config, daoSession); + } + + /** Creates the underlying database table. */ + public static void createTable(Database db, boolean ifNotExists) { + String constraint = ifNotExists? "IF NOT EXISTS ": ""; + db.execSQL("CREATE TABLE " + constraint + "\"GAS_VALUE_BEAN\" (" + // + "\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id + "\"TIME\" TEXT," + // 1: time + "\"VALUE\" INTEGER NOT NULL ," + // 2: value + "\"LOCATION\" TEXT);"); // 3: location + } + + /** Drops the underlying database table. */ + public static void dropTable(Database db, boolean ifExists) { + String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"GAS_VALUE_BEAN\""; + db.execSQL(sql); + } + + @Override + protected final void bindValues(DatabaseStatement stmt, GasValueBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String time = entity.getTime(); + if (time != null) { + stmt.bindString(2, time); + } + stmt.bindLong(3, entity.getValue()); + + String location = entity.getLocation(); + if (location != null) { + stmt.bindString(4, location); + } + } + + @Override + protected final void bindValues(SQLiteStatement stmt, GasValueBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String time = entity.getTime(); + if (time != null) { + stmt.bindString(2, time); + } + stmt.bindLong(3, entity.getValue()); + + String location = entity.getLocation(); + if (location != null) { + stmt.bindString(4, location); + } + } + + @Override + public Long readKey(Cursor cursor, int offset) { + return cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0); + } + + @Override + public GasValueBean readEntity(Cursor cursor, int offset) { + GasValueBean entity = new GasValueBean( // + cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id + cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // time + cursor.getInt(offset + 2), // value + cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3) // location + ); + return entity; + } + + @Override + public void readEntity(Cursor cursor, GasValueBean entity, int offset) { + entity.setId(cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0)); + entity.setTime(cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1)); + entity.setValue(cursor.getInt(offset + 2)); + entity.setLocation(cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3)); + } + + @Override + protected final Long updateKeyAfterInsert(GasValueBean entity, long rowId) { + entity.setId(rowId); + return rowId; + } + + @Override + public Long getKey(GasValueBean entity) { + if(entity != null) { + return entity.getId(); + } else { + return null; + } + } + + @Override + public boolean hasKey(GasValueBean entity) { + return entity.getId() != null; + } + + @Override + protected final boolean isEntityUpdateable() { + return true; + } + +} diff --git a/app/src/main/java/com/casic/endoscope/utils/DataBaseManager.kt b/app/src/main/java/com/casic/endoscope/utils/DataBaseManager.kt index a593a5b..c683db1 100644 --- a/app/src/main/java/com/casic/endoscope/utils/DataBaseManager.kt +++ b/app/src/main/java/com/casic/endoscope/utils/DataBaseManager.kt @@ -1,8 +1,6 @@ package com.casic.endoscope.utils import com.casic.endoscope.base.BaseApplication -import com.casic.endoscope.bean.CameraPointBean -import com.casic.endoscope.greendao.CameraPointBeanDao class DataBaseManager private constructor() { @@ -13,31 +11,5 @@ } } - private var cameraPointDao = BaseApplication.get().getDaoSession().cameraPointBeanDao - - fun cacheCameraPoint(step: Int, h: Int, v: Int) { - val bean = CameraPointBean() - bean.step = step - bean.hAngle = h - bean.vAngle = v - cameraPointDao.insert(bean) - } - - fun deleteCameraPoints(beans: MutableList) { - beans.forEach { - cameraPointDao.delete(it) - } - } - - fun deleteAllCameraPoint() { - cameraPointDao.deleteAll() - } - - fun queryCameraPointById(id: Long): CameraPointBean { - return cameraPointDao.queryBuilder() - .where(CameraPointBeanDao.Properties.Id.eq(id)) - .unique() - } - - fun loadAllCameraPoint(): MutableList = cameraPointDao.loadAll() + private var gasValueBeanDao = BaseApplication.get().getDaoSession().gasValueBeanDao } \ No newline at end of file diff --git a/app/src/main/java/com/casic/endoscope/utils/EndoscopeDevOpenHelper.kt b/app/src/main/java/com/casic/endoscope/utils/EndoscopeDevOpenHelper.kt index 507b1ff..fd87f0f 100644 --- a/app/src/main/java/com/casic/endoscope/utils/EndoscopeDevOpenHelper.kt +++ b/app/src/main/java/com/casic/endoscope/utils/EndoscopeDevOpenHelper.kt @@ -2,8 +2,8 @@ import android.content.Context import android.database.sqlite.SQLiteDatabase.CursorFactory -import com.casic.endoscope.greendao.CameraPointBeanDao import com.casic.endoscope.greendao.DaoMaster +import com.casic.endoscope.greendao.GasValueBeanDao import com.github.yuweiguocn.library.greendao.MigrationHelper import com.github.yuweiguocn.library.greendao.MigrationHelper.ReCreateAllTableListener import org.greenrobot.greendao.database.Database @@ -22,7 +22,7 @@ DaoMaster.dropAllTables(db, ifExists) } }, - CameraPointBeanDao::class.java + GasValueBeanDao::class.java ) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/endoscope/view/MainActivity.kt b/app/src/main/java/com/casic/endoscope/view/MainActivity.kt index 0fe757e..c4509b0 100644 --- a/app/src/main/java/com/casic/endoscope/view/MainActivity.kt +++ b/app/src/main/java/com/casic/endoscope/view/MainActivity.kt @@ -15,8 +15,6 @@ import android.view.SurfaceHolder import android.view.View import androidx.lifecycle.lifecycleScope -import com.casic.endoscope.adapter.CameraPointAdapter -import com.casic.endoscope.bean.CameraPointBean import com.casic.endoscope.databinding.ActivityMainBinding import com.casic.endoscope.extensions.check import com.casic.endoscope.extensions.convertValue @@ -28,14 +26,12 @@ import com.casic.endoscope.extensions.init import com.casic.endoscope.extensions.toTime import com.casic.endoscope.service.VideoTranscodeService -import com.casic.endoscope.utils.DataBaseManager import com.casic.endoscope.utils.ProjectConstant import com.casic.endoscope.utils.ble.BleDeviceManager import com.casic.endoscope.utils.ble.OnDeviceConnectListener import com.casic.endoscope.utils.ble.OnDeviceDiscoveredListener import com.casic.endoscope.utils.hk.MessageCodeHub import com.casic.endoscope.utils.hk.SDKGuider -import com.casic.endoscope.widgets.AddCameraPointDialog import com.casic.endoscope.widgets.BluetoothDeviceDialog import com.casic.endoscope.widgets.LineChartMarkerView import com.github.mikephil.charting.data.Entry @@ -55,10 +51,8 @@ import com.pengxh.kt.lite.extensions.timestampToTime import com.pengxh.kt.lite.utils.LoadingDialogHub import com.pengxh.kt.lite.utils.WeakReferenceHandler -import com.pengxh.kt.lite.widget.SteeringWheelView import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch -import kotlinx.coroutines.withContext import java.text.SimpleDateFormat import java.util.Date import java.util.Locale @@ -101,17 +95,11 @@ //焦距按钮是否已松开 private var isScaleButtonUp = true - //是否拍照成功 - private var isCaptureSuccess = true - private var timer: Timer? = null private var timerTask: TimerTask? = null private var seconds = 0L - private var dataBeans: MutableList = ArrayList() - private var selectedItems: MutableList = ArrayList() private var inputVideoPath = "" private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var dataAdapter: CameraPointAdapter private lateinit var serviceIntent: Intent private lateinit var dataSet: LineDataSet private lateinit var lineData: LineData @@ -123,8 +111,6 @@ override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) - dataBeans = DataBaseManager.get.loadAllCameraPoint() - //显示数据 weakReferenceHandler.sendEmptyMessage(messageCode) @@ -147,13 +133,7 @@ override fun handleMessage(msg: Message): Boolean { if (msg.what == messageCode) { //绑定数据 - dataAdapter = CameraPointAdapter(this, dataBeans) - binding.recyclerView.adapter = dataAdapter - dataAdapter.setOnItemCheckedListener(object : CameraPointAdapter.OnItemCheckedListener { - override fun onItemChecked(position: Int, items: ArrayList) { - selectedItems = items - } - }) + } return true } @@ -209,6 +189,180 @@ } } + binding.upScaleButton.setOnTouchListener { _, event -> + when (event.action) { + MotionEvent.ACTION_DOWN -> { + if (isPreviewSuccess && isScaleButtonUp) { + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_IN, 0) + isScaleButtonUp = false + } + } + + MotionEvent.ACTION_UP -> { + isScaleButtonUp = true + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_IN, 1) + } + } + false + } + + binding.downScaleButton.setOnTouchListener { _, event -> + when (event.action) { + MotionEvent.ACTION_DOWN -> { + if (isPreviewSuccess && isScaleButtonUp) { + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_OUT, 0) + isScaleButtonUp = false + } + } + + MotionEvent.ACTION_UP -> { + isScaleButtonUp = true + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_OUT, 1) + } + } + false + } + + binding.topButton.setOnTouchListener { _, motionEvent -> + when (motionEvent.action) { + MotionEvent.ACTION_DOWN -> { + if (isPreviewSuccess && isActionUp) { + hkSDK.NET_DVR_PTZControlWithSpeed( + previewHandle, PTZCommand.TILT_UP, 0, selectedSpeed + ) + isActionUp = false + } + } + + MotionEvent.ACTION_UP -> { + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.TILT_UP, 1) + isActionUp = true + } + } + false + } + + binding.centerButton.setOnClickListener { + if (!isPreviewSuccess) { + val deviceItem = SDKGuider.sdkGuider.devManageGuider.DeviceItem() + deviceItem.szDevName = "" + deviceItem.devNetInfo = SDKGuider.sdkGuider.devManageGuider.DevNetInfo( + ProjectConstant.HK_NET_IP, + ProjectConstant.HK_NET_PORT, + ProjectConstant.HK_NET_USERNAME, + ProjectConstant.HK_NET_PASSWORD + ) + if (deviceItem.szDevName.isEmpty()) { + deviceItem.szDevName = deviceItem.devNetInfo.szIp + } + val loginV40Jna = SDKGuider.sdkGuider.devManageGuider.login_v40_jna( + deviceItem.szDevName, deviceItem.devNetInfo + ) + if (loginV40Jna) { + //配置设备通道 + try { + val deviceInfo = SDKGuider.sdkGuider.devManageGuider.devList[0] + returnUserId = deviceInfo.szUserId + + aChannelNum = + deviceInfo.deviceInfoV40_jna.struDeviceV30.byChanNum.toInt() + startAChannel = + deviceInfo.deviceInfoV40_jna.struDeviceV30.byStartChan.toInt() + + dChannelNum = + deviceInfo.deviceInfoV40_jna.struDeviceV30.byIPChanNum + deviceInfo.deviceInfoV40_jna.struDeviceV30.byHighDChanNum * 256 + startDChannel = + deviceInfo.deviceInfoV40_jna.struDeviceV30.byStartChan.toInt() + + var iAnalogStartChan = startAChannel + var iDigitalStartChan = startDChannel + + val channelList = ArrayList() + + for (i in 0 until aChannelNum) { + channelList.add("ACamera_$iAnalogStartChan") + iAnalogStartChan++ + } + + for (i in 0 until dChannelNum) { + channelList.add("DCamera_$iDigitalStartChan") + iDigitalStartChan++ + } + selectChannel = Integer.valueOf(channelList[0].getChannel()) + + val streamList = ArrayList() + streamList.add("main_stream") + streamList.add("sub_stream") + streamList.add("third_stream") + + //开始预览 + if (previewHandle != -1) { + SDKGuider.sdkGuider.devPreviewGuider.RealPlay_Stop_jni(previewHandle) + } + val strutPlayInfo = NET_DVR_PREVIEWINFO() + strutPlayInfo.lChannel = selectChannel + strutPlayInfo.dwStreamType = 1 + strutPlayInfo.bBlocked = 1 + strutPlayInfo.hHwnd = binding.surfaceView.holder + previewHandle = SDKGuider.sdkGuider.devPreviewGuider.RealPlay_V40_jni( + returnUserId, strutPlayInfo, null + ) + if (previewHandle < 0) { + Log.d(kTag, "initEvent: Err:${MessageCodeHub.getErrorCode()}") + return@setOnClickListener + } + isPreviewSuccess = true + "预览开启成功".show(context) + //开始计时 + timer = Timer() + timerTask = object : TimerTask() { + override fun run() { + seconds++ + lifecycleScope.launch(Dispatchers.Main) { + binding.runningTimeView.text = seconds.toTime() + } + } + } + timer?.schedule(timerTask, 0, 1000) + } catch (e: IndexOutOfBoundsException) { + e.printStackTrace() + "设备未正常连接,无法开启预览".show(context) + } + } else { + "设备登陆失败".show(context) + } + } else { + if (!SDKGuider.sdkGuider.devPreviewGuider.RealPlay_Stop_jni(previewHandle)) { + return@setOnClickListener + } + previewHandle = -1 + isPreviewSuccess = false + "预览关闭成功".show(context) + //停止计时 + timerTask?.cancel() + timer?.cancel() + } + } + + binding.bottomButton.setOnTouchListener { _, motionEvent -> + when (motionEvent.action) { + MotionEvent.ACTION_DOWN -> { + if (isPreviewSuccess && isActionUp) { + hkSDK.NET_DVR_PTZControlWithSpeed( + previewHandle, PTZCommand.TILT_DOWN, 0, selectedSpeed + ) + isActionUp = false + } + } + + MotionEvent.ACTION_UP -> { + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.TILT_DOWN, 1) + isActionUp = true + } + } + false + } + //单张拍照 binding.imageButton.setOnClickListener { if (isPreviewSuccess) { @@ -252,278 +406,8 @@ true } - //连续拍照 - binding.multipleImageButton.setOnClickListener { - if (dataBeans.isEmpty()) { - "请先设置连续拍照步骤".show(this) - return@setOnClickListener - } - if (isPreviewSuccess) { - lifecycleScope.launch(Dispatchers.IO) { - dataBeans.forEach { - //再拍照 - if (isCaptureSuccess) { - isCaptureSuccess = false - - //先执行角度 - executeAngle(it.hAngle, it.vAngle) - - withContext(Dispatchers.Main) { - "抓取步骤${it.step}画面".show(context) - } - - val strJpeg = NET_DVR_JPEGPARA() - strJpeg.wPicQuality = 1 - strJpeg.wPicSize = 2 - - val imagePath = - "/${createImageFileDir()}/${timeFormat.format(Date())}.png" - hkSDK.NET_DVR_CaptureJPEGPicture( - returnUserId, selectChannel, strJpeg, imagePath - ) - - isCaptureSuccess = MessageCodeHub.getErrorCode() == 0 - } - } - withContext(Dispatchers.Main) { - "连续抓取画面完成".show(context) - } - } - } else { - "摄像头预览未打开,无法拍照".show(this) - } - } - - binding.addButton.setOnClickListener { - val step = if (dataBeans.isEmpty()) { - 0 - } else { - dataBeans.last().step - } - AddCameraPointDialog.Builder().setContext(this).setLastStep(step) - .setNegativeButton("取消").setPositiveButton("添加") - .setOnDialogButtonClickListener(object : - AddCameraPointDialog.OnDialogButtonClickListener { - override fun onConfirmClick(step: Int, hAngle: Int, vAngle: Int) { - DataBaseManager.get.cacheCameraPoint(step, hAngle, vAngle) - dataBeans = DataBaseManager.get.loadAllCameraPoint() - dataAdapter.setRefreshData(dataBeans) - } - - override fun onCancelClick() { - - } - }).build().show() - } - - binding.deleteButton.setOnClickListener { - if (selectedItems.isEmpty()) { - "请先选择要删除的步骤".show(this) - return@setOnClickListener - } - DataBaseManager.get.deleteCameraPoints(selectedItems) - dataBeans = DataBaseManager.get.loadAllCameraPoint() - dataAdapter.setRefreshData(dataBeans) - selectedItems.clear() - } - - binding.steeringWheelView.setOnWheelTouchListener(object : - SteeringWheelView.OnWheelTouchListener { - override fun onCenterClicked() { - if (!isPreviewSuccess) { - val deviceItem = SDKGuider.sdkGuider.devManageGuider.DeviceItem() - deviceItem.szDevName = "" - deviceItem.devNetInfo = SDKGuider.sdkGuider.devManageGuider.DevNetInfo( - ProjectConstant.HK_NET_IP, - ProjectConstant.HK_NET_PORT, - ProjectConstant.HK_NET_USERNAME, - ProjectConstant.HK_NET_PASSWORD - ) - if (deviceItem.szDevName.isEmpty()) { - deviceItem.szDevName = deviceItem.devNetInfo.szIp - } - val loginV40Jna = SDKGuider.sdkGuider.devManageGuider.login_v40_jna( - deviceItem.szDevName, deviceItem.devNetInfo - ) - if (loginV40Jna) { - //配置设备通道 - try { - val deviceInfo = SDKGuider.sdkGuider.devManageGuider.devList[0] - returnUserId = deviceInfo.szUserId - - aChannelNum = - deviceInfo.deviceInfoV40_jna.struDeviceV30.byChanNum.toInt() - startAChannel = - deviceInfo.deviceInfoV40_jna.struDeviceV30.byStartChan.toInt() - - dChannelNum = - deviceInfo.deviceInfoV40_jna.struDeviceV30.byIPChanNum + deviceInfo.deviceInfoV40_jna.struDeviceV30.byHighDChanNum * 256 - startDChannel = - deviceInfo.deviceInfoV40_jna.struDeviceV30.byStartChan.toInt() - - var iAnalogStartChan = startAChannel - var iDigitalStartChan = startDChannel - - val channelList = ArrayList() - - for (i in 0 until aChannelNum) { - channelList.add("ACamera_$iAnalogStartChan") - iAnalogStartChan++ - } - - for (i in 0 until dChannelNum) { - channelList.add("DCamera_$iDigitalStartChan") - iDigitalStartChan++ - } - selectChannel = Integer.valueOf(channelList[0].getChannel()) - - val streamList = ArrayList() - streamList.add("main_stream") - streamList.add("sub_stream") - streamList.add("third_stream") - - //开始预览 - if (previewHandle != -1) { - SDKGuider.sdkGuider.devPreviewGuider.RealPlay_Stop_jni(previewHandle) - } - val strutPlayInfo = NET_DVR_PREVIEWINFO() - strutPlayInfo.lChannel = selectChannel - strutPlayInfo.dwStreamType = 1 - strutPlayInfo.bBlocked = 1 - strutPlayInfo.hHwnd = binding.surfaceView.holder - previewHandle = SDKGuider.sdkGuider.devPreviewGuider.RealPlay_V40_jni( - returnUserId, strutPlayInfo, null - ) - if (previewHandle < 0) { - Log.d(kTag, "initEvent: Err:${MessageCodeHub.getErrorCode()}") - return - } - isPreviewSuccess = true - "预览开启成功".show(context) - //开始计时 - timer = Timer() - timerTask = object : TimerTask() { - override fun run() { - seconds++ - lifecycleScope.launch(Dispatchers.Main) { - binding.runningTimeView.text = seconds.toTime() - } - } - } - timer?.schedule(timerTask, 0, 1000) - } catch (e: IndexOutOfBoundsException) { - e.printStackTrace() - "设备未正常连接,无法开启预览".show(context) - } - } else { - "设备登陆失败".show(context) - } - } else { - if (!SDKGuider.sdkGuider.devPreviewGuider.RealPlay_Stop_jni(previewHandle)) { - return - } - previewHandle = -1 - isPreviewSuccess = false - "预览关闭成功".show(context) - //停止计时 - timerTask?.cancel() - timer?.cancel() - } - } - - override fun onLeftTurn() { - if (isPreviewSuccess && isActionUp) { - hkSDK.NET_DVR_PTZControlWithSpeed( - previewHandle, PTZCommand.PAN_LEFT, 0, selectedSpeed - ) - isActionUp = false - } - } - - override fun onTopTurn() { - if (isPreviewSuccess && isActionUp) { - hkSDK.NET_DVR_PTZControlWithSpeed( - previewHandle, PTZCommand.TILT_UP, 0, selectedSpeed - ) - isActionUp = false - } - } - - override fun onRightTurn() { - if (isPreviewSuccess && isActionUp) { - hkSDK.NET_DVR_PTZControlWithSpeed( - previewHandle, PTZCommand.PAN_RIGHT, 0, selectedSpeed - ) - isActionUp = false - } - } - - override fun onBottomTurn() { - if (isPreviewSuccess && isActionUp) { - hkSDK.NET_DVR_PTZControlWithSpeed( - previewHandle, PTZCommand.TILT_DOWN, 0, selectedSpeed - ) - isActionUp = false - } - } - - override fun onActionTurnUp(dir: SteeringWheelView.Direction) { - when (dir) { - SteeringWheelView.Direction.LEFT -> { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.PAN_LEFT, 1) - isActionUp = true - } - - SteeringWheelView.Direction.TOP -> { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.TILT_UP, 1) - isActionUp = true - } - - SteeringWheelView.Direction.RIGHT -> { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.PAN_RIGHT, 1) - isActionUp = true - } - - SteeringWheelView.Direction.BOTTOM -> { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.TILT_DOWN, 1) - isActionUp = true - } - } - } - }) - - binding.upScaleButton.setOnTouchListener { _, event -> - when (event.action) { - MotionEvent.ACTION_DOWN -> { - if (isPreviewSuccess && isScaleButtonUp) { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_IN, 0) - isScaleButtonUp = false - } - } - - MotionEvent.ACTION_UP -> { - isScaleButtonUp = true - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_IN, 1) - } - } - false - } - - binding.downScaleButton.setOnTouchListener { _, event -> - when (event.action) { - MotionEvent.ACTION_DOWN -> { - if (isPreviewSuccess && isScaleButtonUp) { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_OUT, 0) - isScaleButtonUp = false - } - } - - MotionEvent.ACTION_UP -> { - isScaleButtonUp = true - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_OUT, 1) - } - } - false + binding.resetButton.setOnClickListener { + executeAngle(0, 0) } } diff --git a/app/src/main/res/drawable/bg_solid_layout_blue_10.xml b/app/src/main/res/drawable/bg_solid_layout_blue_10.xml new file mode 100644 index 0000000..b7e06e3 --- /dev/null +++ b/app/src/main/res/drawable/bg_solid_layout_blue_10.xml @@ -0,0 +1,7 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_stroke_layout_blue_10.xml b/app/src/main/res/drawable/bg_stroke_layout_blue_10.xml deleted file mode 100644 index d6f55c9..0000000 --- a/app/src/main/res/drawable/bg_stroke_layout_blue_10.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_camera.xml b/app/src/main/res/drawable/ic_camera.xml new file mode 100644 index 0000000..1f7ab22 --- /dev/null +++ b/app/src/main/res/drawable/ic_camera.xml @@ -0,0 +1,15 @@ + + + + + diff --git a/app/src/main/res/drawable/ic_dir_down.xml b/app/src/main/res/drawable/ic_dir_down.xml deleted file mode 100644 index e6807dc..0000000 --- a/app/src/main/res/drawable/ic_dir_down.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_dir_left.xml b/app/src/main/res/drawable/ic_dir_left.xml deleted file mode 100644 index 12b2237..0000000 --- a/app/src/main/res/drawable/ic_dir_left.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_dir_right.xml b/app/src/main/res/drawable/ic_dir_right.xml deleted file mode 100644 index 96539aa..0000000 --- a/app/src/main/res/drawable/ic_dir_right.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_dir_up.xml b/app/src/main/res/drawable/ic_dir_up.xml deleted file mode 100644 index e7a153e..0000000 --- a/app/src/main/res/drawable/ic_dir_up.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_down.xml b/app/src/main/res/drawable/ic_down.xml new file mode 100644 index 0000000..9fcd974 --- /dev/null +++ b/app/src/main/res/drawable/ic_down.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_minus.xml b/app/src/main/res/drawable/ic_minus.xml index a399f5f..2942b80 100644 --- a/app/src/main/res/drawable/ic_minus.xml +++ b/app/src/main/res/drawable/ic_minus.xml @@ -1,9 +1,9 @@ + android:fillColor="#1875F0" + android:pathData="M864,480H160c-17.6,0 -32,14.4 -32,32s14.4,32 32,32h704c17.6,0 32,-14.4 32,-32s-14.4,-32 -32,-32z" /> diff --git a/app/src/main/res/drawable/ic_off.xml b/app/src/main/res/drawable/ic_off.xml new file mode 100644 index 0000000..1940f16 --- /dev/null +++ b/app/src/main/res/drawable/ic_off.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/ic_picture.xml b/app/src/main/res/drawable/ic_picture.xml new file mode 100644 index 0000000..a781b4c --- /dev/null +++ b/app/src/main/res/drawable/ic_picture.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/ic_plus.xml b/app/src/main/res/drawable/ic_plus.xml index 49d9fb0..db4941d 100644 --- a/app/src/main/res/drawable/ic_plus.xml +++ b/app/src/main/res/drawable/ic_plus.xml @@ -1,9 +1,9 @@ + android:fillColor="#1875F0" + android:pathData="M864,480H544V160c0,-17.6 -14.4,-32 -32,-32s-32,14.4 -32,32v320H160c-17.6,0 -32,14.4 -32,32s14.4,32 32,32h320v320c0,17.6 14.4,32 32,32s32,-14.4 32,-32V544h320c17.6,0 32,-14.4 32,-32s-14.4,-32 -32,-32z" /> diff --git a/app/src/main/res/drawable/ic_reset.xml b/app/src/main/res/drawable/ic_reset.xml new file mode 100644 index 0000000..969dccd --- /dev/null +++ b/app/src/main/res/drawable/ic_reset.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_up.xml b/app/src/main/res/drawable/ic_up.xml new file mode 100644 index 0000000..3f4bca9 --- /dev/null +++ b/app/src/main/res/drawable/ic_up.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/selector_scale_button.xml b/app/src/main/res/drawable/selector_scale_button.xml index 7273700..4efba9d 100644 --- a/app/src/main/res/drawable/selector_scale_button.xml +++ b/app/src/main/res/drawable/selector_scale_button.xml @@ -2,7 +2,7 @@ - + diff --git a/app/build.gradle b/app/build.gradle index c2a2c53..64d4d0c 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -72,7 +72,7 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5.4' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.8' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.cardview:cardview:1.0.0' diff --git a/app/src/main/java/com/casic/endoscope/adapter/CameraPointAdapter.kt b/app/src/main/java/com/casic/endoscope/adapter/CameraPointAdapter.kt deleted file mode 100644 index fe404b2..0000000 --- a/app/src/main/java/com/casic/endoscope/adapter/CameraPointAdapter.kt +++ /dev/null @@ -1,78 +0,0 @@ -package com.casic.endoscope.adapter - -import android.annotation.SuppressLint -import android.content.Context -import android.graphics.Color -import android.view.LayoutInflater -import android.view.ViewGroup -import android.widget.LinearLayout -import androidx.recyclerview.widget.RecyclerView -import com.casic.endoscope.R -import com.casic.endoscope.bean.CameraPointBean -import com.pengxh.kt.lite.adapter.ViewHolder -import com.pengxh.kt.lite.extensions.convertColor - -class CameraPointAdapter( - private val context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var multipleSelected = mutableSetOf() - private var selectedItems = ArrayList() - - override fun getItemCount(): Int = dataRows.size - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { - return ViewHolder( - LayoutInflater.from(context).inflate(R.layout.item_point_list_rv, parent, false) - ) - } - - @SuppressLint("NotifyDataSetChanged") - fun setRefreshData(dataRows: MutableList) { - this.dataRows.clear() - this.dataRows.addAll(dataRows) - notifyDataSetChanged() - multipleSelected.clear() - selectedItems.clear() - } - - override fun onBindViewHolder(holder: ViewHolder, position: Int) { - val item = dataRows[position] - holder.setText(R.id.stepNameView, "步骤 ${item.step}") - .setText(R.id.hAngleView, "水平角度 ${item.hAngle}°") - .setText(R.id.vAngleView, "垂直角度 ${item.vAngle}°") - - val linearLayout = holder.itemView.findViewById(R.id.rootView) - //item背景色 - if (position % 2 == 0) { - linearLayout.setBackgroundColor(Color.parseColor("#C8E3F4")) - } else { - linearLayout.setBackgroundColor(R.color.backgroundColor.convertColor(context)) - } - - holder.itemView.isSelected = multipleSelected.contains(position) - holder.itemView.setOnClickListener { - if (multipleSelected.contains(position)) { - multipleSelected.remove(position) - selectedItems.remove(dataRows[position]) - holder.itemView.isSelected = false - } else { - multipleSelected.add(position) - selectedItems.add(dataRows[position]) - holder.itemView.isSelected = true - } - - itemCheckedListener?.onItemChecked(position, selectedItems) - } - } - - private var itemCheckedListener: OnItemCheckedListener? = null - - interface OnItemCheckedListener { - fun onItemChecked(position: Int, items: ArrayList) - } - - fun setOnItemCheckedListener(listener: OnItemCheckedListener) { - itemCheckedListener = listener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/endoscope/bean/CameraPointBean.java b/app/src/main/java/com/casic/endoscope/bean/CameraPointBean.java deleted file mode 100644 index 3a20d82..0000000 --- a/app/src/main/java/com/casic/endoscope/bean/CameraPointBean.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.casic.endoscope.bean; - -import org.greenrobot.greendao.annotation.Entity; -import org.greenrobot.greendao.annotation.Generated; -import org.greenrobot.greendao.annotation.Id; - -/** - * 必须是java,不能是kt - */ -@Entity -public class CameraPointBean { - - @Id(autoincrement = true) - private Long id;//主键自增 - - private int step;//步骤序号 - private int hAngle;//水平角度 - private int vAngle;//垂直角度 - - @Generated(hash = 1436018650) - public CameraPointBean(Long id, int step, int hAngle, int vAngle) { - this.id = id; - this.step = step; - this.hAngle = hAngle; - this.vAngle = vAngle; - } - - @Generated(hash = 44086073) - public CameraPointBean() { - } - - public Long getId() { - return this.id; - } - - public void setId(Long id) { - this.id = id; - } - - public int getStep() { - return this.step; - } - - public void setStep(int step) { - this.step = step; - } - - public int getHAngle() { - return this.hAngle; - } - - public void setHAngle(int hAngle) { - this.hAngle = hAngle; - } - - public int getVAngle() { - return this.vAngle; - } - - public void setVAngle(int vAngle) { - this.vAngle = vAngle; - } -} diff --git a/app/src/main/java/com/casic/endoscope/bean/GasValueBean.java b/app/src/main/java/com/casic/endoscope/bean/GasValueBean.java new file mode 100644 index 0000000..6537b9a --- /dev/null +++ b/app/src/main/java/com/casic/endoscope/bean/GasValueBean.java @@ -0,0 +1,63 @@ +package com.casic.endoscope.bean; + +import org.greenrobot.greendao.annotation.Entity; +import org.greenrobot.greendao.annotation.Generated; +import org.greenrobot.greendao.annotation.Id; + +/** + * 必须是java,不能是kt + * 甲烷浓度表结构 + */ +@Entity +public class GasValueBean { + @Id(autoincrement = true) + private Long id;//主键自增 + + private String time;//采集浓度的时间 + private int value;//采集的浓度 + private String location;//浓度采集点位置 + + @Generated(hash = 663679791) + public GasValueBean(Long id, String time, int value, String location) { + this.id = id; + this.time = time; + this.value = value; + this.location = location; + } + + @Generated(hash = 291409217) + public GasValueBean() { + } + + public Long getId() { + return this.id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getTime() { + return this.time; + } + + public void setTime(String time) { + this.time = time; + } + + public int getValue() { + return this.value; + } + + public void setValue(int value) { + this.value = value; + } + + public String getLocation() { + return this.location; + } + + public void setLocation(String location) { + this.location = location; + } +} diff --git a/app/src/main/java/com/casic/endoscope/greendao/CameraPointBeanDao.java b/app/src/main/java/com/casic/endoscope/greendao/CameraPointBeanDao.java deleted file mode 100644 index 11bc932..0000000 --- a/app/src/main/java/com/casic/endoscope/greendao/CameraPointBeanDao.java +++ /dev/null @@ -1,138 +0,0 @@ -package com.casic.endoscope.greendao; - -import android.database.Cursor; -import android.database.sqlite.SQLiteStatement; - -import com.casic.endoscope.bean.CameraPointBean; - -import org.greenrobot.greendao.AbstractDao; -import org.greenrobot.greendao.Property; -import org.greenrobot.greendao.database.Database; -import org.greenrobot.greendao.database.DatabaseStatement; -import org.greenrobot.greendao.internal.DaoConfig; - -// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. - -/** - * DAO for table "CAMERA_POINT_BEAN". - */ -public class CameraPointBeanDao extends AbstractDao { - - public static final String TABLENAME = "CAMERA_POINT_BEAN"; - - /** - * Properties of entity CameraPointBean.
- * Can be used for QueryBuilder and for referencing column names. - */ - public static class Properties { - public final static Property Id = new Property(0, Long.class, "id", true, "_id"); - public final static Property Step = new Property(1, int.class, "step", false, "STEP"); - public final static Property HAngle = new Property(2, int.class, "hAngle", false, "H_ANGLE"); - public final static Property VAngle = new Property(3, int.class, "vAngle", false, "V_ANGLE"); - } - - - public CameraPointBeanDao(DaoConfig config) { - super(config); - } - - public CameraPointBeanDao(DaoConfig config, DaoSession daoSession) { - super(config, daoSession); - } - - /** - * Creates the underlying database table. - */ - public static void createTable(Database db, boolean ifNotExists) { - String constraint = ifNotExists ? "IF NOT EXISTS " : ""; - db.execSQL("CREATE TABLE " + constraint + "\"CAMERA_POINT_BEAN\" (" + // - "\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id - "\"STEP\" INTEGER NOT NULL ," + // 1: step - "\"H_ANGLE\" INTEGER NOT NULL ," + // 2: hAngle - "\"V_ANGLE\" INTEGER NOT NULL );"); // 3: vAngle - } - - /** - * Drops the underlying database table. - */ - public static void dropTable(Database db, boolean ifExists) { - String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"CAMERA_POINT_BEAN\""; - db.execSQL(sql); - } - - @Override - protected final void bindValues(DatabaseStatement stmt, CameraPointBean entity) { - stmt.clearBindings(); - - Long id = entity.getId(); - if (id != null) { - stmt.bindLong(1, id); - } - stmt.bindLong(2, entity.getStep()); - stmt.bindLong(3, entity.getHAngle()); - stmt.bindLong(4, entity.getVAngle()); - } - - @Override - protected final void bindValues(SQLiteStatement stmt, CameraPointBean entity) { - stmt.clearBindings(); - - Long id = entity.getId(); - if (id != null) { - stmt.bindLong(1, id); - } - stmt.bindLong(2, entity.getStep()); - stmt.bindLong(3, entity.getHAngle()); - stmt.bindLong(4, entity.getVAngle()); - } - - @Override - public Long readKey(Cursor cursor, int offset) { - return cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0); - } - - @Override - public CameraPointBean readEntity(Cursor cursor, int offset) { - CameraPointBean entity = new CameraPointBean( // - cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id - cursor.getInt(offset + 1), // step - cursor.getInt(offset + 2), // hAngle - cursor.getInt(offset + 3) // vAngle - ); - return entity; - } - - @Override - public void readEntity(Cursor cursor, CameraPointBean entity, int offset) { - entity.setId(cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0)); - entity.setStep(cursor.getInt(offset + 1)); - entity.setHAngle(cursor.getInt(offset + 2)); - entity.setVAngle(cursor.getInt(offset + 3)); - } - - @Override - protected final Long updateKeyAfterInsert(CameraPointBean entity, long rowId) { - entity.setId(rowId); - return rowId; - } - - @Override - public Long getKey(CameraPointBean entity) { - if (entity != null) { - return entity.getId(); - } else { - return null; - } - } - - @Override - public boolean hasKey(CameraPointBean entity) { - return entity.getId() != null; - } - - @Override - protected final boolean isEntityUpdateable() { - return true; - } - -} diff --git a/app/src/main/java/com/casic/endoscope/greendao/DaoMaster.java b/app/src/main/java/com/casic/endoscope/greendao/DaoMaster.java index 5d4fa30..a455fd0 100644 --- a/app/src/main/java/com/casic/endoscope/greendao/DaoMaster.java +++ b/app/src/main/java/com/casic/endoscope/greendao/DaoMaster.java @@ -13,25 +13,20 @@ // THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. - /** * Master of DAO (schema version 1): knows all DAOs. */ public class DaoMaster extends AbstractDaoMaster { public static final int SCHEMA_VERSION = 1; - /** - * Creates underlying database table using DAOs. - */ + /** Creates underlying database table using DAOs. */ public static void createAllTables(Database db, boolean ifNotExists) { - CameraPointBeanDao.createTable(db, ifNotExists); + GasValueBeanDao.createTable(db, ifNotExists); } - /** - * Drops underlying database table using DAOs. - */ + /** Drops underlying database table using DAOs. */ public static void dropAllTables(Database db, boolean ifExists) { - CameraPointBeanDao.dropTable(db, ifExists); + GasValueBeanDao.dropTable(db, ifExists); } /** @@ -50,7 +45,7 @@ public DaoMaster(Database db) { super(db, SCHEMA_VERSION); - registerDaoClass(CameraPointBeanDao.class); + registerDaoClass(GasValueBeanDao.class); } public DaoSession newSession() { @@ -80,9 +75,7 @@ } } - /** - * WARNING: Drops all table on Upgrade! Use only during development. - */ + /** WARNING: Drops all table on Upgrade! Use only during development. */ public static class DevOpenHelper extends OpenHelper { public DevOpenHelper(Context context, String name) { super(context, name); diff --git a/app/src/main/java/com/casic/endoscope/greendao/DaoSession.java b/app/src/main/java/com/casic/endoscope/greendao/DaoSession.java index ed2f9c0..259243d 100644 --- a/app/src/main/java/com/casic/endoscope/greendao/DaoSession.java +++ b/app/src/main/java/com/casic/endoscope/greendao/DaoSession.java @@ -1,6 +1,6 @@ package com.casic.endoscope.greendao; -import com.casic.endoscope.bean.CameraPointBean; +import com.casic.endoscope.bean.GasValueBean; import org.greenrobot.greendao.AbstractDao; import org.greenrobot.greendao.AbstractDaoSession; @@ -19,28 +19,28 @@ */ public class DaoSession extends AbstractDaoSession { - private final DaoConfig cameraPointBeanDaoConfig; + private final DaoConfig gasValueBeanDaoConfig; - private final CameraPointBeanDao cameraPointBeanDao; + private final GasValueBeanDao gasValueBeanDao; public DaoSession(Database db, IdentityScopeType type, Map>, DaoConfig> daoConfigMap) { super(db); - cameraPointBeanDaoConfig = daoConfigMap.get(CameraPointBeanDao.class).clone(); - cameraPointBeanDaoConfig.initIdentityScope(type); + gasValueBeanDaoConfig = daoConfigMap.get(GasValueBeanDao.class).clone(); + gasValueBeanDaoConfig.initIdentityScope(type); - cameraPointBeanDao = new CameraPointBeanDao(cameraPointBeanDaoConfig, this); + gasValueBeanDao = new GasValueBeanDao(gasValueBeanDaoConfig, this); - registerDao(CameraPointBean.class, cameraPointBeanDao); + registerDao(GasValueBean.class, gasValueBeanDao); } public void clear() { - cameraPointBeanDaoConfig.clearIdentityScope(); + gasValueBeanDaoConfig.clearIdentityScope(); } - public CameraPointBeanDao getCameraPointBeanDao() { - return cameraPointBeanDao; + public GasValueBeanDao getGasValueBeanDao() { + return gasValueBeanDao; } } diff --git a/app/src/main/java/com/casic/endoscope/greendao/GasValueBeanDao.java b/app/src/main/java/com/casic/endoscope/greendao/GasValueBeanDao.java new file mode 100644 index 0000000..5149375 --- /dev/null +++ b/app/src/main/java/com/casic/endoscope/greendao/GasValueBeanDao.java @@ -0,0 +1,149 @@ +package com.casic.endoscope.greendao; + +import android.database.Cursor; +import android.database.sqlite.SQLiteStatement; + +import com.casic.endoscope.bean.GasValueBean; + +import org.greenrobot.greendao.AbstractDao; +import org.greenrobot.greendao.Property; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.database.DatabaseStatement; +import org.greenrobot.greendao.internal.DaoConfig; + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. +/** + * DAO for table "GAS_VALUE_BEAN". +*/ +public class GasValueBeanDao extends AbstractDao { + + public static final String TABLENAME = "GAS_VALUE_BEAN"; + + /** + * Properties of entity GasValueBean.
+ * Can be used for QueryBuilder and for referencing column names. + */ + public static class Properties { + public final static Property Id = new Property(0, Long.class, "id", true, "_id"); + public final static Property Time = new Property(1, String.class, "time", false, "TIME"); + public final static Property Value = new Property(2, int.class, "value", false, "VALUE"); + public final static Property Location = new Property(3, String.class, "location", false, "LOCATION"); + } + + + public GasValueBeanDao(DaoConfig config) { + super(config); + } + + public GasValueBeanDao(DaoConfig config, DaoSession daoSession) { + super(config, daoSession); + } + + /** Creates the underlying database table. */ + public static void createTable(Database db, boolean ifNotExists) { + String constraint = ifNotExists? "IF NOT EXISTS ": ""; + db.execSQL("CREATE TABLE " + constraint + "\"GAS_VALUE_BEAN\" (" + // + "\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id + "\"TIME\" TEXT," + // 1: time + "\"VALUE\" INTEGER NOT NULL ," + // 2: value + "\"LOCATION\" TEXT);"); // 3: location + } + + /** Drops the underlying database table. */ + public static void dropTable(Database db, boolean ifExists) { + String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"GAS_VALUE_BEAN\""; + db.execSQL(sql); + } + + @Override + protected final void bindValues(DatabaseStatement stmt, GasValueBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String time = entity.getTime(); + if (time != null) { + stmt.bindString(2, time); + } + stmt.bindLong(3, entity.getValue()); + + String location = entity.getLocation(); + if (location != null) { + stmt.bindString(4, location); + } + } + + @Override + protected final void bindValues(SQLiteStatement stmt, GasValueBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String time = entity.getTime(); + if (time != null) { + stmt.bindString(2, time); + } + stmt.bindLong(3, entity.getValue()); + + String location = entity.getLocation(); + if (location != null) { + stmt.bindString(4, location); + } + } + + @Override + public Long readKey(Cursor cursor, int offset) { + return cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0); + } + + @Override + public GasValueBean readEntity(Cursor cursor, int offset) { + GasValueBean entity = new GasValueBean( // + cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id + cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // time + cursor.getInt(offset + 2), // value + cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3) // location + ); + return entity; + } + + @Override + public void readEntity(Cursor cursor, GasValueBean entity, int offset) { + entity.setId(cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0)); + entity.setTime(cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1)); + entity.setValue(cursor.getInt(offset + 2)); + entity.setLocation(cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3)); + } + + @Override + protected final Long updateKeyAfterInsert(GasValueBean entity, long rowId) { + entity.setId(rowId); + return rowId; + } + + @Override + public Long getKey(GasValueBean entity) { + if(entity != null) { + return entity.getId(); + } else { + return null; + } + } + + @Override + public boolean hasKey(GasValueBean entity) { + return entity.getId() != null; + } + + @Override + protected final boolean isEntityUpdateable() { + return true; + } + +} diff --git a/app/src/main/java/com/casic/endoscope/utils/DataBaseManager.kt b/app/src/main/java/com/casic/endoscope/utils/DataBaseManager.kt index a593a5b..c683db1 100644 --- a/app/src/main/java/com/casic/endoscope/utils/DataBaseManager.kt +++ b/app/src/main/java/com/casic/endoscope/utils/DataBaseManager.kt @@ -1,8 +1,6 @@ package com.casic.endoscope.utils import com.casic.endoscope.base.BaseApplication -import com.casic.endoscope.bean.CameraPointBean -import com.casic.endoscope.greendao.CameraPointBeanDao class DataBaseManager private constructor() { @@ -13,31 +11,5 @@ } } - private var cameraPointDao = BaseApplication.get().getDaoSession().cameraPointBeanDao - - fun cacheCameraPoint(step: Int, h: Int, v: Int) { - val bean = CameraPointBean() - bean.step = step - bean.hAngle = h - bean.vAngle = v - cameraPointDao.insert(bean) - } - - fun deleteCameraPoints(beans: MutableList) { - beans.forEach { - cameraPointDao.delete(it) - } - } - - fun deleteAllCameraPoint() { - cameraPointDao.deleteAll() - } - - fun queryCameraPointById(id: Long): CameraPointBean { - return cameraPointDao.queryBuilder() - .where(CameraPointBeanDao.Properties.Id.eq(id)) - .unique() - } - - fun loadAllCameraPoint(): MutableList = cameraPointDao.loadAll() + private var gasValueBeanDao = BaseApplication.get().getDaoSession().gasValueBeanDao } \ No newline at end of file diff --git a/app/src/main/java/com/casic/endoscope/utils/EndoscopeDevOpenHelper.kt b/app/src/main/java/com/casic/endoscope/utils/EndoscopeDevOpenHelper.kt index 507b1ff..fd87f0f 100644 --- a/app/src/main/java/com/casic/endoscope/utils/EndoscopeDevOpenHelper.kt +++ b/app/src/main/java/com/casic/endoscope/utils/EndoscopeDevOpenHelper.kt @@ -2,8 +2,8 @@ import android.content.Context import android.database.sqlite.SQLiteDatabase.CursorFactory -import com.casic.endoscope.greendao.CameraPointBeanDao import com.casic.endoscope.greendao.DaoMaster +import com.casic.endoscope.greendao.GasValueBeanDao import com.github.yuweiguocn.library.greendao.MigrationHelper import com.github.yuweiguocn.library.greendao.MigrationHelper.ReCreateAllTableListener import org.greenrobot.greendao.database.Database @@ -22,7 +22,7 @@ DaoMaster.dropAllTables(db, ifExists) } }, - CameraPointBeanDao::class.java + GasValueBeanDao::class.java ) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/endoscope/view/MainActivity.kt b/app/src/main/java/com/casic/endoscope/view/MainActivity.kt index 0fe757e..c4509b0 100644 --- a/app/src/main/java/com/casic/endoscope/view/MainActivity.kt +++ b/app/src/main/java/com/casic/endoscope/view/MainActivity.kt @@ -15,8 +15,6 @@ import android.view.SurfaceHolder import android.view.View import androidx.lifecycle.lifecycleScope -import com.casic.endoscope.adapter.CameraPointAdapter -import com.casic.endoscope.bean.CameraPointBean import com.casic.endoscope.databinding.ActivityMainBinding import com.casic.endoscope.extensions.check import com.casic.endoscope.extensions.convertValue @@ -28,14 +26,12 @@ import com.casic.endoscope.extensions.init import com.casic.endoscope.extensions.toTime import com.casic.endoscope.service.VideoTranscodeService -import com.casic.endoscope.utils.DataBaseManager import com.casic.endoscope.utils.ProjectConstant import com.casic.endoscope.utils.ble.BleDeviceManager import com.casic.endoscope.utils.ble.OnDeviceConnectListener import com.casic.endoscope.utils.ble.OnDeviceDiscoveredListener import com.casic.endoscope.utils.hk.MessageCodeHub import com.casic.endoscope.utils.hk.SDKGuider -import com.casic.endoscope.widgets.AddCameraPointDialog import com.casic.endoscope.widgets.BluetoothDeviceDialog import com.casic.endoscope.widgets.LineChartMarkerView import com.github.mikephil.charting.data.Entry @@ -55,10 +51,8 @@ import com.pengxh.kt.lite.extensions.timestampToTime import com.pengxh.kt.lite.utils.LoadingDialogHub import com.pengxh.kt.lite.utils.WeakReferenceHandler -import com.pengxh.kt.lite.widget.SteeringWheelView import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch -import kotlinx.coroutines.withContext import java.text.SimpleDateFormat import java.util.Date import java.util.Locale @@ -101,17 +95,11 @@ //焦距按钮是否已松开 private var isScaleButtonUp = true - //是否拍照成功 - private var isCaptureSuccess = true - private var timer: Timer? = null private var timerTask: TimerTask? = null private var seconds = 0L - private var dataBeans: MutableList = ArrayList() - private var selectedItems: MutableList = ArrayList() private var inputVideoPath = "" private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var dataAdapter: CameraPointAdapter private lateinit var serviceIntent: Intent private lateinit var dataSet: LineDataSet private lateinit var lineData: LineData @@ -123,8 +111,6 @@ override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) - dataBeans = DataBaseManager.get.loadAllCameraPoint() - //显示数据 weakReferenceHandler.sendEmptyMessage(messageCode) @@ -147,13 +133,7 @@ override fun handleMessage(msg: Message): Boolean { if (msg.what == messageCode) { //绑定数据 - dataAdapter = CameraPointAdapter(this, dataBeans) - binding.recyclerView.adapter = dataAdapter - dataAdapter.setOnItemCheckedListener(object : CameraPointAdapter.OnItemCheckedListener { - override fun onItemChecked(position: Int, items: ArrayList) { - selectedItems = items - } - }) + } return true } @@ -209,6 +189,180 @@ } } + binding.upScaleButton.setOnTouchListener { _, event -> + when (event.action) { + MotionEvent.ACTION_DOWN -> { + if (isPreviewSuccess && isScaleButtonUp) { + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_IN, 0) + isScaleButtonUp = false + } + } + + MotionEvent.ACTION_UP -> { + isScaleButtonUp = true + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_IN, 1) + } + } + false + } + + binding.downScaleButton.setOnTouchListener { _, event -> + when (event.action) { + MotionEvent.ACTION_DOWN -> { + if (isPreviewSuccess && isScaleButtonUp) { + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_OUT, 0) + isScaleButtonUp = false + } + } + + MotionEvent.ACTION_UP -> { + isScaleButtonUp = true + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_OUT, 1) + } + } + false + } + + binding.topButton.setOnTouchListener { _, motionEvent -> + when (motionEvent.action) { + MotionEvent.ACTION_DOWN -> { + if (isPreviewSuccess && isActionUp) { + hkSDK.NET_DVR_PTZControlWithSpeed( + previewHandle, PTZCommand.TILT_UP, 0, selectedSpeed + ) + isActionUp = false + } + } + + MotionEvent.ACTION_UP -> { + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.TILT_UP, 1) + isActionUp = true + } + } + false + } + + binding.centerButton.setOnClickListener { + if (!isPreviewSuccess) { + val deviceItem = SDKGuider.sdkGuider.devManageGuider.DeviceItem() + deviceItem.szDevName = "" + deviceItem.devNetInfo = SDKGuider.sdkGuider.devManageGuider.DevNetInfo( + ProjectConstant.HK_NET_IP, + ProjectConstant.HK_NET_PORT, + ProjectConstant.HK_NET_USERNAME, + ProjectConstant.HK_NET_PASSWORD + ) + if (deviceItem.szDevName.isEmpty()) { + deviceItem.szDevName = deviceItem.devNetInfo.szIp + } + val loginV40Jna = SDKGuider.sdkGuider.devManageGuider.login_v40_jna( + deviceItem.szDevName, deviceItem.devNetInfo + ) + if (loginV40Jna) { + //配置设备通道 + try { + val deviceInfo = SDKGuider.sdkGuider.devManageGuider.devList[0] + returnUserId = deviceInfo.szUserId + + aChannelNum = + deviceInfo.deviceInfoV40_jna.struDeviceV30.byChanNum.toInt() + startAChannel = + deviceInfo.deviceInfoV40_jna.struDeviceV30.byStartChan.toInt() + + dChannelNum = + deviceInfo.deviceInfoV40_jna.struDeviceV30.byIPChanNum + deviceInfo.deviceInfoV40_jna.struDeviceV30.byHighDChanNum * 256 + startDChannel = + deviceInfo.deviceInfoV40_jna.struDeviceV30.byStartChan.toInt() + + var iAnalogStartChan = startAChannel + var iDigitalStartChan = startDChannel + + val channelList = ArrayList() + + for (i in 0 until aChannelNum) { + channelList.add("ACamera_$iAnalogStartChan") + iAnalogStartChan++ + } + + for (i in 0 until dChannelNum) { + channelList.add("DCamera_$iDigitalStartChan") + iDigitalStartChan++ + } + selectChannel = Integer.valueOf(channelList[0].getChannel()) + + val streamList = ArrayList() + streamList.add("main_stream") + streamList.add("sub_stream") + streamList.add("third_stream") + + //开始预览 + if (previewHandle != -1) { + SDKGuider.sdkGuider.devPreviewGuider.RealPlay_Stop_jni(previewHandle) + } + val strutPlayInfo = NET_DVR_PREVIEWINFO() + strutPlayInfo.lChannel = selectChannel + strutPlayInfo.dwStreamType = 1 + strutPlayInfo.bBlocked = 1 + strutPlayInfo.hHwnd = binding.surfaceView.holder + previewHandle = SDKGuider.sdkGuider.devPreviewGuider.RealPlay_V40_jni( + returnUserId, strutPlayInfo, null + ) + if (previewHandle < 0) { + Log.d(kTag, "initEvent: Err:${MessageCodeHub.getErrorCode()}") + return@setOnClickListener + } + isPreviewSuccess = true + "预览开启成功".show(context) + //开始计时 + timer = Timer() + timerTask = object : TimerTask() { + override fun run() { + seconds++ + lifecycleScope.launch(Dispatchers.Main) { + binding.runningTimeView.text = seconds.toTime() + } + } + } + timer?.schedule(timerTask, 0, 1000) + } catch (e: IndexOutOfBoundsException) { + e.printStackTrace() + "设备未正常连接,无法开启预览".show(context) + } + } else { + "设备登陆失败".show(context) + } + } else { + if (!SDKGuider.sdkGuider.devPreviewGuider.RealPlay_Stop_jni(previewHandle)) { + return@setOnClickListener + } + previewHandle = -1 + isPreviewSuccess = false + "预览关闭成功".show(context) + //停止计时 + timerTask?.cancel() + timer?.cancel() + } + } + + binding.bottomButton.setOnTouchListener { _, motionEvent -> + when (motionEvent.action) { + MotionEvent.ACTION_DOWN -> { + if (isPreviewSuccess && isActionUp) { + hkSDK.NET_DVR_PTZControlWithSpeed( + previewHandle, PTZCommand.TILT_DOWN, 0, selectedSpeed + ) + isActionUp = false + } + } + + MotionEvent.ACTION_UP -> { + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.TILT_DOWN, 1) + isActionUp = true + } + } + false + } + //单张拍照 binding.imageButton.setOnClickListener { if (isPreviewSuccess) { @@ -252,278 +406,8 @@ true } - //连续拍照 - binding.multipleImageButton.setOnClickListener { - if (dataBeans.isEmpty()) { - "请先设置连续拍照步骤".show(this) - return@setOnClickListener - } - if (isPreviewSuccess) { - lifecycleScope.launch(Dispatchers.IO) { - dataBeans.forEach { - //再拍照 - if (isCaptureSuccess) { - isCaptureSuccess = false - - //先执行角度 - executeAngle(it.hAngle, it.vAngle) - - withContext(Dispatchers.Main) { - "抓取步骤${it.step}画面".show(context) - } - - val strJpeg = NET_DVR_JPEGPARA() - strJpeg.wPicQuality = 1 - strJpeg.wPicSize = 2 - - val imagePath = - "/${createImageFileDir()}/${timeFormat.format(Date())}.png" - hkSDK.NET_DVR_CaptureJPEGPicture( - returnUserId, selectChannel, strJpeg, imagePath - ) - - isCaptureSuccess = MessageCodeHub.getErrorCode() == 0 - } - } - withContext(Dispatchers.Main) { - "连续抓取画面完成".show(context) - } - } - } else { - "摄像头预览未打开,无法拍照".show(this) - } - } - - binding.addButton.setOnClickListener { - val step = if (dataBeans.isEmpty()) { - 0 - } else { - dataBeans.last().step - } - AddCameraPointDialog.Builder().setContext(this).setLastStep(step) - .setNegativeButton("取消").setPositiveButton("添加") - .setOnDialogButtonClickListener(object : - AddCameraPointDialog.OnDialogButtonClickListener { - override fun onConfirmClick(step: Int, hAngle: Int, vAngle: Int) { - DataBaseManager.get.cacheCameraPoint(step, hAngle, vAngle) - dataBeans = DataBaseManager.get.loadAllCameraPoint() - dataAdapter.setRefreshData(dataBeans) - } - - override fun onCancelClick() { - - } - }).build().show() - } - - binding.deleteButton.setOnClickListener { - if (selectedItems.isEmpty()) { - "请先选择要删除的步骤".show(this) - return@setOnClickListener - } - DataBaseManager.get.deleteCameraPoints(selectedItems) - dataBeans = DataBaseManager.get.loadAllCameraPoint() - dataAdapter.setRefreshData(dataBeans) - selectedItems.clear() - } - - binding.steeringWheelView.setOnWheelTouchListener(object : - SteeringWheelView.OnWheelTouchListener { - override fun onCenterClicked() { - if (!isPreviewSuccess) { - val deviceItem = SDKGuider.sdkGuider.devManageGuider.DeviceItem() - deviceItem.szDevName = "" - deviceItem.devNetInfo = SDKGuider.sdkGuider.devManageGuider.DevNetInfo( - ProjectConstant.HK_NET_IP, - ProjectConstant.HK_NET_PORT, - ProjectConstant.HK_NET_USERNAME, - ProjectConstant.HK_NET_PASSWORD - ) - if (deviceItem.szDevName.isEmpty()) { - deviceItem.szDevName = deviceItem.devNetInfo.szIp - } - val loginV40Jna = SDKGuider.sdkGuider.devManageGuider.login_v40_jna( - deviceItem.szDevName, deviceItem.devNetInfo - ) - if (loginV40Jna) { - //配置设备通道 - try { - val deviceInfo = SDKGuider.sdkGuider.devManageGuider.devList[0] - returnUserId = deviceInfo.szUserId - - aChannelNum = - deviceInfo.deviceInfoV40_jna.struDeviceV30.byChanNum.toInt() - startAChannel = - deviceInfo.deviceInfoV40_jna.struDeviceV30.byStartChan.toInt() - - dChannelNum = - deviceInfo.deviceInfoV40_jna.struDeviceV30.byIPChanNum + deviceInfo.deviceInfoV40_jna.struDeviceV30.byHighDChanNum * 256 - startDChannel = - deviceInfo.deviceInfoV40_jna.struDeviceV30.byStartChan.toInt() - - var iAnalogStartChan = startAChannel - var iDigitalStartChan = startDChannel - - val channelList = ArrayList() - - for (i in 0 until aChannelNum) { - channelList.add("ACamera_$iAnalogStartChan") - iAnalogStartChan++ - } - - for (i in 0 until dChannelNum) { - channelList.add("DCamera_$iDigitalStartChan") - iDigitalStartChan++ - } - selectChannel = Integer.valueOf(channelList[0].getChannel()) - - val streamList = ArrayList() - streamList.add("main_stream") - streamList.add("sub_stream") - streamList.add("third_stream") - - //开始预览 - if (previewHandle != -1) { - SDKGuider.sdkGuider.devPreviewGuider.RealPlay_Stop_jni(previewHandle) - } - val strutPlayInfo = NET_DVR_PREVIEWINFO() - strutPlayInfo.lChannel = selectChannel - strutPlayInfo.dwStreamType = 1 - strutPlayInfo.bBlocked = 1 - strutPlayInfo.hHwnd = binding.surfaceView.holder - previewHandle = SDKGuider.sdkGuider.devPreviewGuider.RealPlay_V40_jni( - returnUserId, strutPlayInfo, null - ) - if (previewHandle < 0) { - Log.d(kTag, "initEvent: Err:${MessageCodeHub.getErrorCode()}") - return - } - isPreviewSuccess = true - "预览开启成功".show(context) - //开始计时 - timer = Timer() - timerTask = object : TimerTask() { - override fun run() { - seconds++ - lifecycleScope.launch(Dispatchers.Main) { - binding.runningTimeView.text = seconds.toTime() - } - } - } - timer?.schedule(timerTask, 0, 1000) - } catch (e: IndexOutOfBoundsException) { - e.printStackTrace() - "设备未正常连接,无法开启预览".show(context) - } - } else { - "设备登陆失败".show(context) - } - } else { - if (!SDKGuider.sdkGuider.devPreviewGuider.RealPlay_Stop_jni(previewHandle)) { - return - } - previewHandle = -1 - isPreviewSuccess = false - "预览关闭成功".show(context) - //停止计时 - timerTask?.cancel() - timer?.cancel() - } - } - - override fun onLeftTurn() { - if (isPreviewSuccess && isActionUp) { - hkSDK.NET_DVR_PTZControlWithSpeed( - previewHandle, PTZCommand.PAN_LEFT, 0, selectedSpeed - ) - isActionUp = false - } - } - - override fun onTopTurn() { - if (isPreviewSuccess && isActionUp) { - hkSDK.NET_DVR_PTZControlWithSpeed( - previewHandle, PTZCommand.TILT_UP, 0, selectedSpeed - ) - isActionUp = false - } - } - - override fun onRightTurn() { - if (isPreviewSuccess && isActionUp) { - hkSDK.NET_DVR_PTZControlWithSpeed( - previewHandle, PTZCommand.PAN_RIGHT, 0, selectedSpeed - ) - isActionUp = false - } - } - - override fun onBottomTurn() { - if (isPreviewSuccess && isActionUp) { - hkSDK.NET_DVR_PTZControlWithSpeed( - previewHandle, PTZCommand.TILT_DOWN, 0, selectedSpeed - ) - isActionUp = false - } - } - - override fun onActionTurnUp(dir: SteeringWheelView.Direction) { - when (dir) { - SteeringWheelView.Direction.LEFT -> { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.PAN_LEFT, 1) - isActionUp = true - } - - SteeringWheelView.Direction.TOP -> { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.TILT_UP, 1) - isActionUp = true - } - - SteeringWheelView.Direction.RIGHT -> { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.PAN_RIGHT, 1) - isActionUp = true - } - - SteeringWheelView.Direction.BOTTOM -> { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.TILT_DOWN, 1) - isActionUp = true - } - } - } - }) - - binding.upScaleButton.setOnTouchListener { _, event -> - when (event.action) { - MotionEvent.ACTION_DOWN -> { - if (isPreviewSuccess && isScaleButtonUp) { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_IN, 0) - isScaleButtonUp = false - } - } - - MotionEvent.ACTION_UP -> { - isScaleButtonUp = true - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_IN, 1) - } - } - false - } - - binding.downScaleButton.setOnTouchListener { _, event -> - when (event.action) { - MotionEvent.ACTION_DOWN -> { - if (isPreviewSuccess && isScaleButtonUp) { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_OUT, 0) - isScaleButtonUp = false - } - } - - MotionEvent.ACTION_UP -> { - isScaleButtonUp = true - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_OUT, 1) - } - } - false + binding.resetButton.setOnClickListener { + executeAngle(0, 0) } } diff --git a/app/src/main/res/drawable/bg_solid_layout_blue_10.xml b/app/src/main/res/drawable/bg_solid_layout_blue_10.xml new file mode 100644 index 0000000..b7e06e3 --- /dev/null +++ b/app/src/main/res/drawable/bg_solid_layout_blue_10.xml @@ -0,0 +1,7 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_stroke_layout_blue_10.xml b/app/src/main/res/drawable/bg_stroke_layout_blue_10.xml deleted file mode 100644 index d6f55c9..0000000 --- a/app/src/main/res/drawable/bg_stroke_layout_blue_10.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_camera.xml b/app/src/main/res/drawable/ic_camera.xml new file mode 100644 index 0000000..1f7ab22 --- /dev/null +++ b/app/src/main/res/drawable/ic_camera.xml @@ -0,0 +1,15 @@ + + + + + diff --git a/app/src/main/res/drawable/ic_dir_down.xml b/app/src/main/res/drawable/ic_dir_down.xml deleted file mode 100644 index e6807dc..0000000 --- a/app/src/main/res/drawable/ic_dir_down.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_dir_left.xml b/app/src/main/res/drawable/ic_dir_left.xml deleted file mode 100644 index 12b2237..0000000 --- a/app/src/main/res/drawable/ic_dir_left.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_dir_right.xml b/app/src/main/res/drawable/ic_dir_right.xml deleted file mode 100644 index 96539aa..0000000 --- a/app/src/main/res/drawable/ic_dir_right.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_dir_up.xml b/app/src/main/res/drawable/ic_dir_up.xml deleted file mode 100644 index e7a153e..0000000 --- a/app/src/main/res/drawable/ic_dir_up.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_down.xml b/app/src/main/res/drawable/ic_down.xml new file mode 100644 index 0000000..9fcd974 --- /dev/null +++ b/app/src/main/res/drawable/ic_down.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_minus.xml b/app/src/main/res/drawable/ic_minus.xml index a399f5f..2942b80 100644 --- a/app/src/main/res/drawable/ic_minus.xml +++ b/app/src/main/res/drawable/ic_minus.xml @@ -1,9 +1,9 @@ + android:fillColor="#1875F0" + android:pathData="M864,480H160c-17.6,0 -32,14.4 -32,32s14.4,32 32,32h704c17.6,0 32,-14.4 32,-32s-14.4,-32 -32,-32z" /> diff --git a/app/src/main/res/drawable/ic_off.xml b/app/src/main/res/drawable/ic_off.xml new file mode 100644 index 0000000..1940f16 --- /dev/null +++ b/app/src/main/res/drawable/ic_off.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/ic_picture.xml b/app/src/main/res/drawable/ic_picture.xml new file mode 100644 index 0000000..a781b4c --- /dev/null +++ b/app/src/main/res/drawable/ic_picture.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/ic_plus.xml b/app/src/main/res/drawable/ic_plus.xml index 49d9fb0..db4941d 100644 --- a/app/src/main/res/drawable/ic_plus.xml +++ b/app/src/main/res/drawable/ic_plus.xml @@ -1,9 +1,9 @@ + android:fillColor="#1875F0" + android:pathData="M864,480H544V160c0,-17.6 -14.4,-32 -32,-32s-32,14.4 -32,32v320H160c-17.6,0 -32,14.4 -32,32s14.4,32 32,32h320v320c0,17.6 14.4,32 32,32s32,-14.4 32,-32V544h320c17.6,0 32,-14.4 32,-32s-14.4,-32 -32,-32z" /> diff --git a/app/src/main/res/drawable/ic_reset.xml b/app/src/main/res/drawable/ic_reset.xml new file mode 100644 index 0000000..969dccd --- /dev/null +++ b/app/src/main/res/drawable/ic_reset.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_up.xml b/app/src/main/res/drawable/ic_up.xml new file mode 100644 index 0000000..3f4bca9 --- /dev/null +++ b/app/src/main/res/drawable/ic_up.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/selector_scale_button.xml b/app/src/main/res/drawable/selector_scale_button.xml index 7273700..4efba9d 100644 --- a/app/src/main/res/drawable/selector_scale_button.xml +++ b/app/src/main/res/drawable/selector_scale_button.xml @@ -2,7 +2,7 @@ - + diff --git a/app/src/main/res/layout/activity_big_image.xml b/app/src/main/res/layout/activity_big_image.xml index 228c2c4..b0b948c 100644 --- a/app/src/main/res/layout/activity_big_image.xml +++ b/app/src/main/res/layout/activity_big_image.xml @@ -26,7 +26,7 @@ android:layout_height="wrap_content" android:layout_centerVertical="true" android:layout_marginStart="@dimen/lib_dp_10" - android:src="@drawable/ic_left_white" /> + android:src="@drawable/ic_title_left" /> -) : RecyclerView.Adapter() { - - private var multipleSelected = mutableSetOf() - private var selectedItems = ArrayList() - - override fun getItemCount(): Int = dataRows.size - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { - return ViewHolder( - LayoutInflater.from(context).inflate(R.layout.item_point_list_rv, parent, false) - ) - } - - @SuppressLint("NotifyDataSetChanged") - fun setRefreshData(dataRows: MutableList) { - this.dataRows.clear() - this.dataRows.addAll(dataRows) - notifyDataSetChanged() - multipleSelected.clear() - selectedItems.clear() - } - - override fun onBindViewHolder(holder: ViewHolder, position: Int) { - val item = dataRows[position] - holder.setText(R.id.stepNameView, "步骤 ${item.step}") - .setText(R.id.hAngleView, "水平角度 ${item.hAngle}°") - .setText(R.id.vAngleView, "垂直角度 ${item.vAngle}°") - - val linearLayout = holder.itemView.findViewById(R.id.rootView) - //item背景色 - if (position % 2 == 0) { - linearLayout.setBackgroundColor(Color.parseColor("#C8E3F4")) - } else { - linearLayout.setBackgroundColor(R.color.backgroundColor.convertColor(context)) - } - - holder.itemView.isSelected = multipleSelected.contains(position) - holder.itemView.setOnClickListener { - if (multipleSelected.contains(position)) { - multipleSelected.remove(position) - selectedItems.remove(dataRows[position]) - holder.itemView.isSelected = false - } else { - multipleSelected.add(position) - selectedItems.add(dataRows[position]) - holder.itemView.isSelected = true - } - - itemCheckedListener?.onItemChecked(position, selectedItems) - } - } - - private var itemCheckedListener: OnItemCheckedListener? = null - - interface OnItemCheckedListener { - fun onItemChecked(position: Int, items: ArrayList) - } - - fun setOnItemCheckedListener(listener: OnItemCheckedListener) { - itemCheckedListener = listener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/endoscope/bean/CameraPointBean.java b/app/src/main/java/com/casic/endoscope/bean/CameraPointBean.java deleted file mode 100644 index 3a20d82..0000000 --- a/app/src/main/java/com/casic/endoscope/bean/CameraPointBean.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.casic.endoscope.bean; - -import org.greenrobot.greendao.annotation.Entity; -import org.greenrobot.greendao.annotation.Generated; -import org.greenrobot.greendao.annotation.Id; - -/** - * 必须是java,不能是kt - */ -@Entity -public class CameraPointBean { - - @Id(autoincrement = true) - private Long id;//主键自增 - - private int step;//步骤序号 - private int hAngle;//水平角度 - private int vAngle;//垂直角度 - - @Generated(hash = 1436018650) - public CameraPointBean(Long id, int step, int hAngle, int vAngle) { - this.id = id; - this.step = step; - this.hAngle = hAngle; - this.vAngle = vAngle; - } - - @Generated(hash = 44086073) - public CameraPointBean() { - } - - public Long getId() { - return this.id; - } - - public void setId(Long id) { - this.id = id; - } - - public int getStep() { - return this.step; - } - - public void setStep(int step) { - this.step = step; - } - - public int getHAngle() { - return this.hAngle; - } - - public void setHAngle(int hAngle) { - this.hAngle = hAngle; - } - - public int getVAngle() { - return this.vAngle; - } - - public void setVAngle(int vAngle) { - this.vAngle = vAngle; - } -} diff --git a/app/src/main/java/com/casic/endoscope/bean/GasValueBean.java b/app/src/main/java/com/casic/endoscope/bean/GasValueBean.java new file mode 100644 index 0000000..6537b9a --- /dev/null +++ b/app/src/main/java/com/casic/endoscope/bean/GasValueBean.java @@ -0,0 +1,63 @@ +package com.casic.endoscope.bean; + +import org.greenrobot.greendao.annotation.Entity; +import org.greenrobot.greendao.annotation.Generated; +import org.greenrobot.greendao.annotation.Id; + +/** + * 必须是java,不能是kt + * 甲烷浓度表结构 + */ +@Entity +public class GasValueBean { + @Id(autoincrement = true) + private Long id;//主键自增 + + private String time;//采集浓度的时间 + private int value;//采集的浓度 + private String location;//浓度采集点位置 + + @Generated(hash = 663679791) + public GasValueBean(Long id, String time, int value, String location) { + this.id = id; + this.time = time; + this.value = value; + this.location = location; + } + + @Generated(hash = 291409217) + public GasValueBean() { + } + + public Long getId() { + return this.id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getTime() { + return this.time; + } + + public void setTime(String time) { + this.time = time; + } + + public int getValue() { + return this.value; + } + + public void setValue(int value) { + this.value = value; + } + + public String getLocation() { + return this.location; + } + + public void setLocation(String location) { + this.location = location; + } +} diff --git a/app/src/main/java/com/casic/endoscope/greendao/CameraPointBeanDao.java b/app/src/main/java/com/casic/endoscope/greendao/CameraPointBeanDao.java deleted file mode 100644 index 11bc932..0000000 --- a/app/src/main/java/com/casic/endoscope/greendao/CameraPointBeanDao.java +++ /dev/null @@ -1,138 +0,0 @@ -package com.casic.endoscope.greendao; - -import android.database.Cursor; -import android.database.sqlite.SQLiteStatement; - -import com.casic.endoscope.bean.CameraPointBean; - -import org.greenrobot.greendao.AbstractDao; -import org.greenrobot.greendao.Property; -import org.greenrobot.greendao.database.Database; -import org.greenrobot.greendao.database.DatabaseStatement; -import org.greenrobot.greendao.internal.DaoConfig; - -// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. - -/** - * DAO for table "CAMERA_POINT_BEAN". - */ -public class CameraPointBeanDao extends AbstractDao { - - public static final String TABLENAME = "CAMERA_POINT_BEAN"; - - /** - * Properties of entity CameraPointBean.
- * Can be used for QueryBuilder and for referencing column names. - */ - public static class Properties { - public final static Property Id = new Property(0, Long.class, "id", true, "_id"); - public final static Property Step = new Property(1, int.class, "step", false, "STEP"); - public final static Property HAngle = new Property(2, int.class, "hAngle", false, "H_ANGLE"); - public final static Property VAngle = new Property(3, int.class, "vAngle", false, "V_ANGLE"); - } - - - public CameraPointBeanDao(DaoConfig config) { - super(config); - } - - public CameraPointBeanDao(DaoConfig config, DaoSession daoSession) { - super(config, daoSession); - } - - /** - * Creates the underlying database table. - */ - public static void createTable(Database db, boolean ifNotExists) { - String constraint = ifNotExists ? "IF NOT EXISTS " : ""; - db.execSQL("CREATE TABLE " + constraint + "\"CAMERA_POINT_BEAN\" (" + // - "\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id - "\"STEP\" INTEGER NOT NULL ," + // 1: step - "\"H_ANGLE\" INTEGER NOT NULL ," + // 2: hAngle - "\"V_ANGLE\" INTEGER NOT NULL );"); // 3: vAngle - } - - /** - * Drops the underlying database table. - */ - public static void dropTable(Database db, boolean ifExists) { - String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"CAMERA_POINT_BEAN\""; - db.execSQL(sql); - } - - @Override - protected final void bindValues(DatabaseStatement stmt, CameraPointBean entity) { - stmt.clearBindings(); - - Long id = entity.getId(); - if (id != null) { - stmt.bindLong(1, id); - } - stmt.bindLong(2, entity.getStep()); - stmt.bindLong(3, entity.getHAngle()); - stmt.bindLong(4, entity.getVAngle()); - } - - @Override - protected final void bindValues(SQLiteStatement stmt, CameraPointBean entity) { - stmt.clearBindings(); - - Long id = entity.getId(); - if (id != null) { - stmt.bindLong(1, id); - } - stmt.bindLong(2, entity.getStep()); - stmt.bindLong(3, entity.getHAngle()); - stmt.bindLong(4, entity.getVAngle()); - } - - @Override - public Long readKey(Cursor cursor, int offset) { - return cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0); - } - - @Override - public CameraPointBean readEntity(Cursor cursor, int offset) { - CameraPointBean entity = new CameraPointBean( // - cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id - cursor.getInt(offset + 1), // step - cursor.getInt(offset + 2), // hAngle - cursor.getInt(offset + 3) // vAngle - ); - return entity; - } - - @Override - public void readEntity(Cursor cursor, CameraPointBean entity, int offset) { - entity.setId(cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0)); - entity.setStep(cursor.getInt(offset + 1)); - entity.setHAngle(cursor.getInt(offset + 2)); - entity.setVAngle(cursor.getInt(offset + 3)); - } - - @Override - protected final Long updateKeyAfterInsert(CameraPointBean entity, long rowId) { - entity.setId(rowId); - return rowId; - } - - @Override - public Long getKey(CameraPointBean entity) { - if (entity != null) { - return entity.getId(); - } else { - return null; - } - } - - @Override - public boolean hasKey(CameraPointBean entity) { - return entity.getId() != null; - } - - @Override - protected final boolean isEntityUpdateable() { - return true; - } - -} diff --git a/app/src/main/java/com/casic/endoscope/greendao/DaoMaster.java b/app/src/main/java/com/casic/endoscope/greendao/DaoMaster.java index 5d4fa30..a455fd0 100644 --- a/app/src/main/java/com/casic/endoscope/greendao/DaoMaster.java +++ b/app/src/main/java/com/casic/endoscope/greendao/DaoMaster.java @@ -13,25 +13,20 @@ // THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. - /** * Master of DAO (schema version 1): knows all DAOs. */ public class DaoMaster extends AbstractDaoMaster { public static final int SCHEMA_VERSION = 1; - /** - * Creates underlying database table using DAOs. - */ + /** Creates underlying database table using DAOs. */ public static void createAllTables(Database db, boolean ifNotExists) { - CameraPointBeanDao.createTable(db, ifNotExists); + GasValueBeanDao.createTable(db, ifNotExists); } - /** - * Drops underlying database table using DAOs. - */ + /** Drops underlying database table using DAOs. */ public static void dropAllTables(Database db, boolean ifExists) { - CameraPointBeanDao.dropTable(db, ifExists); + GasValueBeanDao.dropTable(db, ifExists); } /** @@ -50,7 +45,7 @@ public DaoMaster(Database db) { super(db, SCHEMA_VERSION); - registerDaoClass(CameraPointBeanDao.class); + registerDaoClass(GasValueBeanDao.class); } public DaoSession newSession() { @@ -80,9 +75,7 @@ } } - /** - * WARNING: Drops all table on Upgrade! Use only during development. - */ + /** WARNING: Drops all table on Upgrade! Use only during development. */ public static class DevOpenHelper extends OpenHelper { public DevOpenHelper(Context context, String name) { super(context, name); diff --git a/app/src/main/java/com/casic/endoscope/greendao/DaoSession.java b/app/src/main/java/com/casic/endoscope/greendao/DaoSession.java index ed2f9c0..259243d 100644 --- a/app/src/main/java/com/casic/endoscope/greendao/DaoSession.java +++ b/app/src/main/java/com/casic/endoscope/greendao/DaoSession.java @@ -1,6 +1,6 @@ package com.casic.endoscope.greendao; -import com.casic.endoscope.bean.CameraPointBean; +import com.casic.endoscope.bean.GasValueBean; import org.greenrobot.greendao.AbstractDao; import org.greenrobot.greendao.AbstractDaoSession; @@ -19,28 +19,28 @@ */ public class DaoSession extends AbstractDaoSession { - private final DaoConfig cameraPointBeanDaoConfig; + private final DaoConfig gasValueBeanDaoConfig; - private final CameraPointBeanDao cameraPointBeanDao; + private final GasValueBeanDao gasValueBeanDao; public DaoSession(Database db, IdentityScopeType type, Map>, DaoConfig> daoConfigMap) { super(db); - cameraPointBeanDaoConfig = daoConfigMap.get(CameraPointBeanDao.class).clone(); - cameraPointBeanDaoConfig.initIdentityScope(type); + gasValueBeanDaoConfig = daoConfigMap.get(GasValueBeanDao.class).clone(); + gasValueBeanDaoConfig.initIdentityScope(type); - cameraPointBeanDao = new CameraPointBeanDao(cameraPointBeanDaoConfig, this); + gasValueBeanDao = new GasValueBeanDao(gasValueBeanDaoConfig, this); - registerDao(CameraPointBean.class, cameraPointBeanDao); + registerDao(GasValueBean.class, gasValueBeanDao); } public void clear() { - cameraPointBeanDaoConfig.clearIdentityScope(); + gasValueBeanDaoConfig.clearIdentityScope(); } - public CameraPointBeanDao getCameraPointBeanDao() { - return cameraPointBeanDao; + public GasValueBeanDao getGasValueBeanDao() { + return gasValueBeanDao; } } diff --git a/app/src/main/java/com/casic/endoscope/greendao/GasValueBeanDao.java b/app/src/main/java/com/casic/endoscope/greendao/GasValueBeanDao.java new file mode 100644 index 0000000..5149375 --- /dev/null +++ b/app/src/main/java/com/casic/endoscope/greendao/GasValueBeanDao.java @@ -0,0 +1,149 @@ +package com.casic.endoscope.greendao; + +import android.database.Cursor; +import android.database.sqlite.SQLiteStatement; + +import com.casic.endoscope.bean.GasValueBean; + +import org.greenrobot.greendao.AbstractDao; +import org.greenrobot.greendao.Property; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.database.DatabaseStatement; +import org.greenrobot.greendao.internal.DaoConfig; + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. +/** + * DAO for table "GAS_VALUE_BEAN". +*/ +public class GasValueBeanDao extends AbstractDao { + + public static final String TABLENAME = "GAS_VALUE_BEAN"; + + /** + * Properties of entity GasValueBean.
+ * Can be used for QueryBuilder and for referencing column names. + */ + public static class Properties { + public final static Property Id = new Property(0, Long.class, "id", true, "_id"); + public final static Property Time = new Property(1, String.class, "time", false, "TIME"); + public final static Property Value = new Property(2, int.class, "value", false, "VALUE"); + public final static Property Location = new Property(3, String.class, "location", false, "LOCATION"); + } + + + public GasValueBeanDao(DaoConfig config) { + super(config); + } + + public GasValueBeanDao(DaoConfig config, DaoSession daoSession) { + super(config, daoSession); + } + + /** Creates the underlying database table. */ + public static void createTable(Database db, boolean ifNotExists) { + String constraint = ifNotExists? "IF NOT EXISTS ": ""; + db.execSQL("CREATE TABLE " + constraint + "\"GAS_VALUE_BEAN\" (" + // + "\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id + "\"TIME\" TEXT," + // 1: time + "\"VALUE\" INTEGER NOT NULL ," + // 2: value + "\"LOCATION\" TEXT);"); // 3: location + } + + /** Drops the underlying database table. */ + public static void dropTable(Database db, boolean ifExists) { + String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"GAS_VALUE_BEAN\""; + db.execSQL(sql); + } + + @Override + protected final void bindValues(DatabaseStatement stmt, GasValueBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String time = entity.getTime(); + if (time != null) { + stmt.bindString(2, time); + } + stmt.bindLong(3, entity.getValue()); + + String location = entity.getLocation(); + if (location != null) { + stmt.bindString(4, location); + } + } + + @Override + protected final void bindValues(SQLiteStatement stmt, GasValueBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String time = entity.getTime(); + if (time != null) { + stmt.bindString(2, time); + } + stmt.bindLong(3, entity.getValue()); + + String location = entity.getLocation(); + if (location != null) { + stmt.bindString(4, location); + } + } + + @Override + public Long readKey(Cursor cursor, int offset) { + return cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0); + } + + @Override + public GasValueBean readEntity(Cursor cursor, int offset) { + GasValueBean entity = new GasValueBean( // + cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id + cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // time + cursor.getInt(offset + 2), // value + cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3) // location + ); + return entity; + } + + @Override + public void readEntity(Cursor cursor, GasValueBean entity, int offset) { + entity.setId(cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0)); + entity.setTime(cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1)); + entity.setValue(cursor.getInt(offset + 2)); + entity.setLocation(cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3)); + } + + @Override + protected final Long updateKeyAfterInsert(GasValueBean entity, long rowId) { + entity.setId(rowId); + return rowId; + } + + @Override + public Long getKey(GasValueBean entity) { + if(entity != null) { + return entity.getId(); + } else { + return null; + } + } + + @Override + public boolean hasKey(GasValueBean entity) { + return entity.getId() != null; + } + + @Override + protected final boolean isEntityUpdateable() { + return true; + } + +} diff --git a/app/src/main/java/com/casic/endoscope/utils/DataBaseManager.kt b/app/src/main/java/com/casic/endoscope/utils/DataBaseManager.kt index a593a5b..c683db1 100644 --- a/app/src/main/java/com/casic/endoscope/utils/DataBaseManager.kt +++ b/app/src/main/java/com/casic/endoscope/utils/DataBaseManager.kt @@ -1,8 +1,6 @@ package com.casic.endoscope.utils import com.casic.endoscope.base.BaseApplication -import com.casic.endoscope.bean.CameraPointBean -import com.casic.endoscope.greendao.CameraPointBeanDao class DataBaseManager private constructor() { @@ -13,31 +11,5 @@ } } - private var cameraPointDao = BaseApplication.get().getDaoSession().cameraPointBeanDao - - fun cacheCameraPoint(step: Int, h: Int, v: Int) { - val bean = CameraPointBean() - bean.step = step - bean.hAngle = h - bean.vAngle = v - cameraPointDao.insert(bean) - } - - fun deleteCameraPoints(beans: MutableList) { - beans.forEach { - cameraPointDao.delete(it) - } - } - - fun deleteAllCameraPoint() { - cameraPointDao.deleteAll() - } - - fun queryCameraPointById(id: Long): CameraPointBean { - return cameraPointDao.queryBuilder() - .where(CameraPointBeanDao.Properties.Id.eq(id)) - .unique() - } - - fun loadAllCameraPoint(): MutableList = cameraPointDao.loadAll() + private var gasValueBeanDao = BaseApplication.get().getDaoSession().gasValueBeanDao } \ No newline at end of file diff --git a/app/src/main/java/com/casic/endoscope/utils/EndoscopeDevOpenHelper.kt b/app/src/main/java/com/casic/endoscope/utils/EndoscopeDevOpenHelper.kt index 507b1ff..fd87f0f 100644 --- a/app/src/main/java/com/casic/endoscope/utils/EndoscopeDevOpenHelper.kt +++ b/app/src/main/java/com/casic/endoscope/utils/EndoscopeDevOpenHelper.kt @@ -2,8 +2,8 @@ import android.content.Context import android.database.sqlite.SQLiteDatabase.CursorFactory -import com.casic.endoscope.greendao.CameraPointBeanDao import com.casic.endoscope.greendao.DaoMaster +import com.casic.endoscope.greendao.GasValueBeanDao import com.github.yuweiguocn.library.greendao.MigrationHelper import com.github.yuweiguocn.library.greendao.MigrationHelper.ReCreateAllTableListener import org.greenrobot.greendao.database.Database @@ -22,7 +22,7 @@ DaoMaster.dropAllTables(db, ifExists) } }, - CameraPointBeanDao::class.java + GasValueBeanDao::class.java ) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/endoscope/view/MainActivity.kt b/app/src/main/java/com/casic/endoscope/view/MainActivity.kt index 0fe757e..c4509b0 100644 --- a/app/src/main/java/com/casic/endoscope/view/MainActivity.kt +++ b/app/src/main/java/com/casic/endoscope/view/MainActivity.kt @@ -15,8 +15,6 @@ import android.view.SurfaceHolder import android.view.View import androidx.lifecycle.lifecycleScope -import com.casic.endoscope.adapter.CameraPointAdapter -import com.casic.endoscope.bean.CameraPointBean import com.casic.endoscope.databinding.ActivityMainBinding import com.casic.endoscope.extensions.check import com.casic.endoscope.extensions.convertValue @@ -28,14 +26,12 @@ import com.casic.endoscope.extensions.init import com.casic.endoscope.extensions.toTime import com.casic.endoscope.service.VideoTranscodeService -import com.casic.endoscope.utils.DataBaseManager import com.casic.endoscope.utils.ProjectConstant import com.casic.endoscope.utils.ble.BleDeviceManager import com.casic.endoscope.utils.ble.OnDeviceConnectListener import com.casic.endoscope.utils.ble.OnDeviceDiscoveredListener import com.casic.endoscope.utils.hk.MessageCodeHub import com.casic.endoscope.utils.hk.SDKGuider -import com.casic.endoscope.widgets.AddCameraPointDialog import com.casic.endoscope.widgets.BluetoothDeviceDialog import com.casic.endoscope.widgets.LineChartMarkerView import com.github.mikephil.charting.data.Entry @@ -55,10 +51,8 @@ import com.pengxh.kt.lite.extensions.timestampToTime import com.pengxh.kt.lite.utils.LoadingDialogHub import com.pengxh.kt.lite.utils.WeakReferenceHandler -import com.pengxh.kt.lite.widget.SteeringWheelView import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch -import kotlinx.coroutines.withContext import java.text.SimpleDateFormat import java.util.Date import java.util.Locale @@ -101,17 +95,11 @@ //焦距按钮是否已松开 private var isScaleButtonUp = true - //是否拍照成功 - private var isCaptureSuccess = true - private var timer: Timer? = null private var timerTask: TimerTask? = null private var seconds = 0L - private var dataBeans: MutableList = ArrayList() - private var selectedItems: MutableList = ArrayList() private var inputVideoPath = "" private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var dataAdapter: CameraPointAdapter private lateinit var serviceIntent: Intent private lateinit var dataSet: LineDataSet private lateinit var lineData: LineData @@ -123,8 +111,6 @@ override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) - dataBeans = DataBaseManager.get.loadAllCameraPoint() - //显示数据 weakReferenceHandler.sendEmptyMessage(messageCode) @@ -147,13 +133,7 @@ override fun handleMessage(msg: Message): Boolean { if (msg.what == messageCode) { //绑定数据 - dataAdapter = CameraPointAdapter(this, dataBeans) - binding.recyclerView.adapter = dataAdapter - dataAdapter.setOnItemCheckedListener(object : CameraPointAdapter.OnItemCheckedListener { - override fun onItemChecked(position: Int, items: ArrayList) { - selectedItems = items - } - }) + } return true } @@ -209,6 +189,180 @@ } } + binding.upScaleButton.setOnTouchListener { _, event -> + when (event.action) { + MotionEvent.ACTION_DOWN -> { + if (isPreviewSuccess && isScaleButtonUp) { + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_IN, 0) + isScaleButtonUp = false + } + } + + MotionEvent.ACTION_UP -> { + isScaleButtonUp = true + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_IN, 1) + } + } + false + } + + binding.downScaleButton.setOnTouchListener { _, event -> + when (event.action) { + MotionEvent.ACTION_DOWN -> { + if (isPreviewSuccess && isScaleButtonUp) { + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_OUT, 0) + isScaleButtonUp = false + } + } + + MotionEvent.ACTION_UP -> { + isScaleButtonUp = true + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_OUT, 1) + } + } + false + } + + binding.topButton.setOnTouchListener { _, motionEvent -> + when (motionEvent.action) { + MotionEvent.ACTION_DOWN -> { + if (isPreviewSuccess && isActionUp) { + hkSDK.NET_DVR_PTZControlWithSpeed( + previewHandle, PTZCommand.TILT_UP, 0, selectedSpeed + ) + isActionUp = false + } + } + + MotionEvent.ACTION_UP -> { + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.TILT_UP, 1) + isActionUp = true + } + } + false + } + + binding.centerButton.setOnClickListener { + if (!isPreviewSuccess) { + val deviceItem = SDKGuider.sdkGuider.devManageGuider.DeviceItem() + deviceItem.szDevName = "" + deviceItem.devNetInfo = SDKGuider.sdkGuider.devManageGuider.DevNetInfo( + ProjectConstant.HK_NET_IP, + ProjectConstant.HK_NET_PORT, + ProjectConstant.HK_NET_USERNAME, + ProjectConstant.HK_NET_PASSWORD + ) + if (deviceItem.szDevName.isEmpty()) { + deviceItem.szDevName = deviceItem.devNetInfo.szIp + } + val loginV40Jna = SDKGuider.sdkGuider.devManageGuider.login_v40_jna( + deviceItem.szDevName, deviceItem.devNetInfo + ) + if (loginV40Jna) { + //配置设备通道 + try { + val deviceInfo = SDKGuider.sdkGuider.devManageGuider.devList[0] + returnUserId = deviceInfo.szUserId + + aChannelNum = + deviceInfo.deviceInfoV40_jna.struDeviceV30.byChanNum.toInt() + startAChannel = + deviceInfo.deviceInfoV40_jna.struDeviceV30.byStartChan.toInt() + + dChannelNum = + deviceInfo.deviceInfoV40_jna.struDeviceV30.byIPChanNum + deviceInfo.deviceInfoV40_jna.struDeviceV30.byHighDChanNum * 256 + startDChannel = + deviceInfo.deviceInfoV40_jna.struDeviceV30.byStartChan.toInt() + + var iAnalogStartChan = startAChannel + var iDigitalStartChan = startDChannel + + val channelList = ArrayList() + + for (i in 0 until aChannelNum) { + channelList.add("ACamera_$iAnalogStartChan") + iAnalogStartChan++ + } + + for (i in 0 until dChannelNum) { + channelList.add("DCamera_$iDigitalStartChan") + iDigitalStartChan++ + } + selectChannel = Integer.valueOf(channelList[0].getChannel()) + + val streamList = ArrayList() + streamList.add("main_stream") + streamList.add("sub_stream") + streamList.add("third_stream") + + //开始预览 + if (previewHandle != -1) { + SDKGuider.sdkGuider.devPreviewGuider.RealPlay_Stop_jni(previewHandle) + } + val strutPlayInfo = NET_DVR_PREVIEWINFO() + strutPlayInfo.lChannel = selectChannel + strutPlayInfo.dwStreamType = 1 + strutPlayInfo.bBlocked = 1 + strutPlayInfo.hHwnd = binding.surfaceView.holder + previewHandle = SDKGuider.sdkGuider.devPreviewGuider.RealPlay_V40_jni( + returnUserId, strutPlayInfo, null + ) + if (previewHandle < 0) { + Log.d(kTag, "initEvent: Err:${MessageCodeHub.getErrorCode()}") + return@setOnClickListener + } + isPreviewSuccess = true + "预览开启成功".show(context) + //开始计时 + timer = Timer() + timerTask = object : TimerTask() { + override fun run() { + seconds++ + lifecycleScope.launch(Dispatchers.Main) { + binding.runningTimeView.text = seconds.toTime() + } + } + } + timer?.schedule(timerTask, 0, 1000) + } catch (e: IndexOutOfBoundsException) { + e.printStackTrace() + "设备未正常连接,无法开启预览".show(context) + } + } else { + "设备登陆失败".show(context) + } + } else { + if (!SDKGuider.sdkGuider.devPreviewGuider.RealPlay_Stop_jni(previewHandle)) { + return@setOnClickListener + } + previewHandle = -1 + isPreviewSuccess = false + "预览关闭成功".show(context) + //停止计时 + timerTask?.cancel() + timer?.cancel() + } + } + + binding.bottomButton.setOnTouchListener { _, motionEvent -> + when (motionEvent.action) { + MotionEvent.ACTION_DOWN -> { + if (isPreviewSuccess && isActionUp) { + hkSDK.NET_DVR_PTZControlWithSpeed( + previewHandle, PTZCommand.TILT_DOWN, 0, selectedSpeed + ) + isActionUp = false + } + } + + MotionEvent.ACTION_UP -> { + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.TILT_DOWN, 1) + isActionUp = true + } + } + false + } + //单张拍照 binding.imageButton.setOnClickListener { if (isPreviewSuccess) { @@ -252,278 +406,8 @@ true } - //连续拍照 - binding.multipleImageButton.setOnClickListener { - if (dataBeans.isEmpty()) { - "请先设置连续拍照步骤".show(this) - return@setOnClickListener - } - if (isPreviewSuccess) { - lifecycleScope.launch(Dispatchers.IO) { - dataBeans.forEach { - //再拍照 - if (isCaptureSuccess) { - isCaptureSuccess = false - - //先执行角度 - executeAngle(it.hAngle, it.vAngle) - - withContext(Dispatchers.Main) { - "抓取步骤${it.step}画面".show(context) - } - - val strJpeg = NET_DVR_JPEGPARA() - strJpeg.wPicQuality = 1 - strJpeg.wPicSize = 2 - - val imagePath = - "/${createImageFileDir()}/${timeFormat.format(Date())}.png" - hkSDK.NET_DVR_CaptureJPEGPicture( - returnUserId, selectChannel, strJpeg, imagePath - ) - - isCaptureSuccess = MessageCodeHub.getErrorCode() == 0 - } - } - withContext(Dispatchers.Main) { - "连续抓取画面完成".show(context) - } - } - } else { - "摄像头预览未打开,无法拍照".show(this) - } - } - - binding.addButton.setOnClickListener { - val step = if (dataBeans.isEmpty()) { - 0 - } else { - dataBeans.last().step - } - AddCameraPointDialog.Builder().setContext(this).setLastStep(step) - .setNegativeButton("取消").setPositiveButton("添加") - .setOnDialogButtonClickListener(object : - AddCameraPointDialog.OnDialogButtonClickListener { - override fun onConfirmClick(step: Int, hAngle: Int, vAngle: Int) { - DataBaseManager.get.cacheCameraPoint(step, hAngle, vAngle) - dataBeans = DataBaseManager.get.loadAllCameraPoint() - dataAdapter.setRefreshData(dataBeans) - } - - override fun onCancelClick() { - - } - }).build().show() - } - - binding.deleteButton.setOnClickListener { - if (selectedItems.isEmpty()) { - "请先选择要删除的步骤".show(this) - return@setOnClickListener - } - DataBaseManager.get.deleteCameraPoints(selectedItems) - dataBeans = DataBaseManager.get.loadAllCameraPoint() - dataAdapter.setRefreshData(dataBeans) - selectedItems.clear() - } - - binding.steeringWheelView.setOnWheelTouchListener(object : - SteeringWheelView.OnWheelTouchListener { - override fun onCenterClicked() { - if (!isPreviewSuccess) { - val deviceItem = SDKGuider.sdkGuider.devManageGuider.DeviceItem() - deviceItem.szDevName = "" - deviceItem.devNetInfo = SDKGuider.sdkGuider.devManageGuider.DevNetInfo( - ProjectConstant.HK_NET_IP, - ProjectConstant.HK_NET_PORT, - ProjectConstant.HK_NET_USERNAME, - ProjectConstant.HK_NET_PASSWORD - ) - if (deviceItem.szDevName.isEmpty()) { - deviceItem.szDevName = deviceItem.devNetInfo.szIp - } - val loginV40Jna = SDKGuider.sdkGuider.devManageGuider.login_v40_jna( - deviceItem.szDevName, deviceItem.devNetInfo - ) - if (loginV40Jna) { - //配置设备通道 - try { - val deviceInfo = SDKGuider.sdkGuider.devManageGuider.devList[0] - returnUserId = deviceInfo.szUserId - - aChannelNum = - deviceInfo.deviceInfoV40_jna.struDeviceV30.byChanNum.toInt() - startAChannel = - deviceInfo.deviceInfoV40_jna.struDeviceV30.byStartChan.toInt() - - dChannelNum = - deviceInfo.deviceInfoV40_jna.struDeviceV30.byIPChanNum + deviceInfo.deviceInfoV40_jna.struDeviceV30.byHighDChanNum * 256 - startDChannel = - deviceInfo.deviceInfoV40_jna.struDeviceV30.byStartChan.toInt() - - var iAnalogStartChan = startAChannel - var iDigitalStartChan = startDChannel - - val channelList = ArrayList() - - for (i in 0 until aChannelNum) { - channelList.add("ACamera_$iAnalogStartChan") - iAnalogStartChan++ - } - - for (i in 0 until dChannelNum) { - channelList.add("DCamera_$iDigitalStartChan") - iDigitalStartChan++ - } - selectChannel = Integer.valueOf(channelList[0].getChannel()) - - val streamList = ArrayList() - streamList.add("main_stream") - streamList.add("sub_stream") - streamList.add("third_stream") - - //开始预览 - if (previewHandle != -1) { - SDKGuider.sdkGuider.devPreviewGuider.RealPlay_Stop_jni(previewHandle) - } - val strutPlayInfo = NET_DVR_PREVIEWINFO() - strutPlayInfo.lChannel = selectChannel - strutPlayInfo.dwStreamType = 1 - strutPlayInfo.bBlocked = 1 - strutPlayInfo.hHwnd = binding.surfaceView.holder - previewHandle = SDKGuider.sdkGuider.devPreviewGuider.RealPlay_V40_jni( - returnUserId, strutPlayInfo, null - ) - if (previewHandle < 0) { - Log.d(kTag, "initEvent: Err:${MessageCodeHub.getErrorCode()}") - return - } - isPreviewSuccess = true - "预览开启成功".show(context) - //开始计时 - timer = Timer() - timerTask = object : TimerTask() { - override fun run() { - seconds++ - lifecycleScope.launch(Dispatchers.Main) { - binding.runningTimeView.text = seconds.toTime() - } - } - } - timer?.schedule(timerTask, 0, 1000) - } catch (e: IndexOutOfBoundsException) { - e.printStackTrace() - "设备未正常连接,无法开启预览".show(context) - } - } else { - "设备登陆失败".show(context) - } - } else { - if (!SDKGuider.sdkGuider.devPreviewGuider.RealPlay_Stop_jni(previewHandle)) { - return - } - previewHandle = -1 - isPreviewSuccess = false - "预览关闭成功".show(context) - //停止计时 - timerTask?.cancel() - timer?.cancel() - } - } - - override fun onLeftTurn() { - if (isPreviewSuccess && isActionUp) { - hkSDK.NET_DVR_PTZControlWithSpeed( - previewHandle, PTZCommand.PAN_LEFT, 0, selectedSpeed - ) - isActionUp = false - } - } - - override fun onTopTurn() { - if (isPreviewSuccess && isActionUp) { - hkSDK.NET_DVR_PTZControlWithSpeed( - previewHandle, PTZCommand.TILT_UP, 0, selectedSpeed - ) - isActionUp = false - } - } - - override fun onRightTurn() { - if (isPreviewSuccess && isActionUp) { - hkSDK.NET_DVR_PTZControlWithSpeed( - previewHandle, PTZCommand.PAN_RIGHT, 0, selectedSpeed - ) - isActionUp = false - } - } - - override fun onBottomTurn() { - if (isPreviewSuccess && isActionUp) { - hkSDK.NET_DVR_PTZControlWithSpeed( - previewHandle, PTZCommand.TILT_DOWN, 0, selectedSpeed - ) - isActionUp = false - } - } - - override fun onActionTurnUp(dir: SteeringWheelView.Direction) { - when (dir) { - SteeringWheelView.Direction.LEFT -> { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.PAN_LEFT, 1) - isActionUp = true - } - - SteeringWheelView.Direction.TOP -> { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.TILT_UP, 1) - isActionUp = true - } - - SteeringWheelView.Direction.RIGHT -> { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.PAN_RIGHT, 1) - isActionUp = true - } - - SteeringWheelView.Direction.BOTTOM -> { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.TILT_DOWN, 1) - isActionUp = true - } - } - } - }) - - binding.upScaleButton.setOnTouchListener { _, event -> - when (event.action) { - MotionEvent.ACTION_DOWN -> { - if (isPreviewSuccess && isScaleButtonUp) { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_IN, 0) - isScaleButtonUp = false - } - } - - MotionEvent.ACTION_UP -> { - isScaleButtonUp = true - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_IN, 1) - } - } - false - } - - binding.downScaleButton.setOnTouchListener { _, event -> - when (event.action) { - MotionEvent.ACTION_DOWN -> { - if (isPreviewSuccess && isScaleButtonUp) { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_OUT, 0) - isScaleButtonUp = false - } - } - - MotionEvent.ACTION_UP -> { - isScaleButtonUp = true - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_OUT, 1) - } - } - false + binding.resetButton.setOnClickListener { + executeAngle(0, 0) } } diff --git a/app/src/main/res/drawable/bg_solid_layout_blue_10.xml b/app/src/main/res/drawable/bg_solid_layout_blue_10.xml new file mode 100644 index 0000000..b7e06e3 --- /dev/null +++ b/app/src/main/res/drawable/bg_solid_layout_blue_10.xml @@ -0,0 +1,7 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_stroke_layout_blue_10.xml b/app/src/main/res/drawable/bg_stroke_layout_blue_10.xml deleted file mode 100644 index d6f55c9..0000000 --- a/app/src/main/res/drawable/bg_stroke_layout_blue_10.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_camera.xml b/app/src/main/res/drawable/ic_camera.xml new file mode 100644 index 0000000..1f7ab22 --- /dev/null +++ b/app/src/main/res/drawable/ic_camera.xml @@ -0,0 +1,15 @@ + + + + + diff --git a/app/src/main/res/drawable/ic_dir_down.xml b/app/src/main/res/drawable/ic_dir_down.xml deleted file mode 100644 index e6807dc..0000000 --- a/app/src/main/res/drawable/ic_dir_down.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_dir_left.xml b/app/src/main/res/drawable/ic_dir_left.xml deleted file mode 100644 index 12b2237..0000000 --- a/app/src/main/res/drawable/ic_dir_left.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_dir_right.xml b/app/src/main/res/drawable/ic_dir_right.xml deleted file mode 100644 index 96539aa..0000000 --- a/app/src/main/res/drawable/ic_dir_right.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_dir_up.xml b/app/src/main/res/drawable/ic_dir_up.xml deleted file mode 100644 index e7a153e..0000000 --- a/app/src/main/res/drawable/ic_dir_up.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_down.xml b/app/src/main/res/drawable/ic_down.xml new file mode 100644 index 0000000..9fcd974 --- /dev/null +++ b/app/src/main/res/drawable/ic_down.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_minus.xml b/app/src/main/res/drawable/ic_minus.xml index a399f5f..2942b80 100644 --- a/app/src/main/res/drawable/ic_minus.xml +++ b/app/src/main/res/drawable/ic_minus.xml @@ -1,9 +1,9 @@ + android:fillColor="#1875F0" + android:pathData="M864,480H160c-17.6,0 -32,14.4 -32,32s14.4,32 32,32h704c17.6,0 32,-14.4 32,-32s-14.4,-32 -32,-32z" /> diff --git a/app/src/main/res/drawable/ic_off.xml b/app/src/main/res/drawable/ic_off.xml new file mode 100644 index 0000000..1940f16 --- /dev/null +++ b/app/src/main/res/drawable/ic_off.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/ic_picture.xml b/app/src/main/res/drawable/ic_picture.xml new file mode 100644 index 0000000..a781b4c --- /dev/null +++ b/app/src/main/res/drawable/ic_picture.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/ic_plus.xml b/app/src/main/res/drawable/ic_plus.xml index 49d9fb0..db4941d 100644 --- a/app/src/main/res/drawable/ic_plus.xml +++ b/app/src/main/res/drawable/ic_plus.xml @@ -1,9 +1,9 @@ + android:fillColor="#1875F0" + android:pathData="M864,480H544V160c0,-17.6 -14.4,-32 -32,-32s-32,14.4 -32,32v320H160c-17.6,0 -32,14.4 -32,32s14.4,32 32,32h320v320c0,17.6 14.4,32 32,32s32,-14.4 32,-32V544h320c17.6,0 32,-14.4 32,-32s-14.4,-32 -32,-32z" /> diff --git a/app/src/main/res/drawable/ic_reset.xml b/app/src/main/res/drawable/ic_reset.xml new file mode 100644 index 0000000..969dccd --- /dev/null +++ b/app/src/main/res/drawable/ic_reset.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_up.xml b/app/src/main/res/drawable/ic_up.xml new file mode 100644 index 0000000..3f4bca9 --- /dev/null +++ b/app/src/main/res/drawable/ic_up.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/selector_scale_button.xml b/app/src/main/res/drawable/selector_scale_button.xml index 7273700..4efba9d 100644 --- a/app/src/main/res/drawable/selector_scale_button.xml +++ b/app/src/main/res/drawable/selector_scale_button.xml @@ -2,7 +2,7 @@ - + diff --git a/app/src/main/res/layout/activity_big_image.xml b/app/src/main/res/layout/activity_big_image.xml index 228c2c4..b0b948c 100644 --- a/app/src/main/res/layout/activity_big_image.xml +++ b/app/src/main/res/layout/activity_big_image.xml @@ -26,7 +26,7 @@ android:layout_height="wrap_content" android:layout_centerVertical="true" android:layout_marginStart="@dimen/lib_dp_10" - android:src="@drawable/ic_left_white" /> + android:src="@drawable/ic_title_left" /> @@ -45,7 +44,8 @@ android:id="@+id/searchBleButton" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_marginEnd="@dimen/dp_3" + android:layout_margin="@dimen/dp_7" + android:background="@drawable/selector_scale_button" android:text="搜索蓝牙" />
@@ -70,119 +70,13 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -192,6 +86,28 @@ android:layout_height="match_parent" /> + + + + + + + - - - - - - - - + android:text="(长按照片可操作)" + android:textColor="@color/hintColor" /> + + app:layoutManager="androidx.recyclerview.widget.GridLayoutManager" + app:spanCount="2" />
@@ -288,106 +188,136 @@ android:layout_height="match_parent" android:background="@color/backgroundColor" android:gravity="center_horizontal" - android:orientation="horizontal" - android:paddingVertical="@dimen/dp_10"> + android:orientation="vertical"> + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginHorizontal="@dimen/dp_10" + android:layout_marginVertical="@dimen/dp_5" + android:orientation="horizontal"> - - - - - - - - - - - - - - - - + + android:orientation="horizontal"> - - - + android:layout_marginVertical="@dimen/dp_10" + android:layout_marginStart="@dimen/dp_10" + android:layout_marginEnd="@dimen/dp_20" + android:layout_weight="1" + android:background="@drawable/bg_solid_layout_blue_10"> + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/app/build.gradle b/app/build.gradle index c2a2c53..64d4d0c 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -72,7 +72,7 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5.4' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.8' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.cardview:cardview:1.0.0' diff --git a/app/src/main/java/com/casic/endoscope/adapter/CameraPointAdapter.kt b/app/src/main/java/com/casic/endoscope/adapter/CameraPointAdapter.kt deleted file mode 100644 index fe404b2..0000000 --- a/app/src/main/java/com/casic/endoscope/adapter/CameraPointAdapter.kt +++ /dev/null @@ -1,78 +0,0 @@ -package com.casic.endoscope.adapter - -import android.annotation.SuppressLint -import android.content.Context -import android.graphics.Color -import android.view.LayoutInflater -import android.view.ViewGroup -import android.widget.LinearLayout -import androidx.recyclerview.widget.RecyclerView -import com.casic.endoscope.R -import com.casic.endoscope.bean.CameraPointBean -import com.pengxh.kt.lite.adapter.ViewHolder -import com.pengxh.kt.lite.extensions.convertColor - -class CameraPointAdapter( - private val context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var multipleSelected = mutableSetOf() - private var selectedItems = ArrayList() - - override fun getItemCount(): Int = dataRows.size - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { - return ViewHolder( - LayoutInflater.from(context).inflate(R.layout.item_point_list_rv, parent, false) - ) - } - - @SuppressLint("NotifyDataSetChanged") - fun setRefreshData(dataRows: MutableList) { - this.dataRows.clear() - this.dataRows.addAll(dataRows) - notifyDataSetChanged() - multipleSelected.clear() - selectedItems.clear() - } - - override fun onBindViewHolder(holder: ViewHolder, position: Int) { - val item = dataRows[position] - holder.setText(R.id.stepNameView, "步骤 ${item.step}") - .setText(R.id.hAngleView, "水平角度 ${item.hAngle}°") - .setText(R.id.vAngleView, "垂直角度 ${item.vAngle}°") - - val linearLayout = holder.itemView.findViewById(R.id.rootView) - //item背景色 - if (position % 2 == 0) { - linearLayout.setBackgroundColor(Color.parseColor("#C8E3F4")) - } else { - linearLayout.setBackgroundColor(R.color.backgroundColor.convertColor(context)) - } - - holder.itemView.isSelected = multipleSelected.contains(position) - holder.itemView.setOnClickListener { - if (multipleSelected.contains(position)) { - multipleSelected.remove(position) - selectedItems.remove(dataRows[position]) - holder.itemView.isSelected = false - } else { - multipleSelected.add(position) - selectedItems.add(dataRows[position]) - holder.itemView.isSelected = true - } - - itemCheckedListener?.onItemChecked(position, selectedItems) - } - } - - private var itemCheckedListener: OnItemCheckedListener? = null - - interface OnItemCheckedListener { - fun onItemChecked(position: Int, items: ArrayList) - } - - fun setOnItemCheckedListener(listener: OnItemCheckedListener) { - itemCheckedListener = listener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/endoscope/bean/CameraPointBean.java b/app/src/main/java/com/casic/endoscope/bean/CameraPointBean.java deleted file mode 100644 index 3a20d82..0000000 --- a/app/src/main/java/com/casic/endoscope/bean/CameraPointBean.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.casic.endoscope.bean; - -import org.greenrobot.greendao.annotation.Entity; -import org.greenrobot.greendao.annotation.Generated; -import org.greenrobot.greendao.annotation.Id; - -/** - * 必须是java,不能是kt - */ -@Entity -public class CameraPointBean { - - @Id(autoincrement = true) - private Long id;//主键自增 - - private int step;//步骤序号 - private int hAngle;//水平角度 - private int vAngle;//垂直角度 - - @Generated(hash = 1436018650) - public CameraPointBean(Long id, int step, int hAngle, int vAngle) { - this.id = id; - this.step = step; - this.hAngle = hAngle; - this.vAngle = vAngle; - } - - @Generated(hash = 44086073) - public CameraPointBean() { - } - - public Long getId() { - return this.id; - } - - public void setId(Long id) { - this.id = id; - } - - public int getStep() { - return this.step; - } - - public void setStep(int step) { - this.step = step; - } - - public int getHAngle() { - return this.hAngle; - } - - public void setHAngle(int hAngle) { - this.hAngle = hAngle; - } - - public int getVAngle() { - return this.vAngle; - } - - public void setVAngle(int vAngle) { - this.vAngle = vAngle; - } -} diff --git a/app/src/main/java/com/casic/endoscope/bean/GasValueBean.java b/app/src/main/java/com/casic/endoscope/bean/GasValueBean.java new file mode 100644 index 0000000..6537b9a --- /dev/null +++ b/app/src/main/java/com/casic/endoscope/bean/GasValueBean.java @@ -0,0 +1,63 @@ +package com.casic.endoscope.bean; + +import org.greenrobot.greendao.annotation.Entity; +import org.greenrobot.greendao.annotation.Generated; +import org.greenrobot.greendao.annotation.Id; + +/** + * 必须是java,不能是kt + * 甲烷浓度表结构 + */ +@Entity +public class GasValueBean { + @Id(autoincrement = true) + private Long id;//主键自增 + + private String time;//采集浓度的时间 + private int value;//采集的浓度 + private String location;//浓度采集点位置 + + @Generated(hash = 663679791) + public GasValueBean(Long id, String time, int value, String location) { + this.id = id; + this.time = time; + this.value = value; + this.location = location; + } + + @Generated(hash = 291409217) + public GasValueBean() { + } + + public Long getId() { + return this.id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getTime() { + return this.time; + } + + public void setTime(String time) { + this.time = time; + } + + public int getValue() { + return this.value; + } + + public void setValue(int value) { + this.value = value; + } + + public String getLocation() { + return this.location; + } + + public void setLocation(String location) { + this.location = location; + } +} diff --git a/app/src/main/java/com/casic/endoscope/greendao/CameraPointBeanDao.java b/app/src/main/java/com/casic/endoscope/greendao/CameraPointBeanDao.java deleted file mode 100644 index 11bc932..0000000 --- a/app/src/main/java/com/casic/endoscope/greendao/CameraPointBeanDao.java +++ /dev/null @@ -1,138 +0,0 @@ -package com.casic.endoscope.greendao; - -import android.database.Cursor; -import android.database.sqlite.SQLiteStatement; - -import com.casic.endoscope.bean.CameraPointBean; - -import org.greenrobot.greendao.AbstractDao; -import org.greenrobot.greendao.Property; -import org.greenrobot.greendao.database.Database; -import org.greenrobot.greendao.database.DatabaseStatement; -import org.greenrobot.greendao.internal.DaoConfig; - -// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. - -/** - * DAO for table "CAMERA_POINT_BEAN". - */ -public class CameraPointBeanDao extends AbstractDao { - - public static final String TABLENAME = "CAMERA_POINT_BEAN"; - - /** - * Properties of entity CameraPointBean.
- * Can be used for QueryBuilder and for referencing column names. - */ - public static class Properties { - public final static Property Id = new Property(0, Long.class, "id", true, "_id"); - public final static Property Step = new Property(1, int.class, "step", false, "STEP"); - public final static Property HAngle = new Property(2, int.class, "hAngle", false, "H_ANGLE"); - public final static Property VAngle = new Property(3, int.class, "vAngle", false, "V_ANGLE"); - } - - - public CameraPointBeanDao(DaoConfig config) { - super(config); - } - - public CameraPointBeanDao(DaoConfig config, DaoSession daoSession) { - super(config, daoSession); - } - - /** - * Creates the underlying database table. - */ - public static void createTable(Database db, boolean ifNotExists) { - String constraint = ifNotExists ? "IF NOT EXISTS " : ""; - db.execSQL("CREATE TABLE " + constraint + "\"CAMERA_POINT_BEAN\" (" + // - "\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id - "\"STEP\" INTEGER NOT NULL ," + // 1: step - "\"H_ANGLE\" INTEGER NOT NULL ," + // 2: hAngle - "\"V_ANGLE\" INTEGER NOT NULL );"); // 3: vAngle - } - - /** - * Drops the underlying database table. - */ - public static void dropTable(Database db, boolean ifExists) { - String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"CAMERA_POINT_BEAN\""; - db.execSQL(sql); - } - - @Override - protected final void bindValues(DatabaseStatement stmt, CameraPointBean entity) { - stmt.clearBindings(); - - Long id = entity.getId(); - if (id != null) { - stmt.bindLong(1, id); - } - stmt.bindLong(2, entity.getStep()); - stmt.bindLong(3, entity.getHAngle()); - stmt.bindLong(4, entity.getVAngle()); - } - - @Override - protected final void bindValues(SQLiteStatement stmt, CameraPointBean entity) { - stmt.clearBindings(); - - Long id = entity.getId(); - if (id != null) { - stmt.bindLong(1, id); - } - stmt.bindLong(2, entity.getStep()); - stmt.bindLong(3, entity.getHAngle()); - stmt.bindLong(4, entity.getVAngle()); - } - - @Override - public Long readKey(Cursor cursor, int offset) { - return cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0); - } - - @Override - public CameraPointBean readEntity(Cursor cursor, int offset) { - CameraPointBean entity = new CameraPointBean( // - cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id - cursor.getInt(offset + 1), // step - cursor.getInt(offset + 2), // hAngle - cursor.getInt(offset + 3) // vAngle - ); - return entity; - } - - @Override - public void readEntity(Cursor cursor, CameraPointBean entity, int offset) { - entity.setId(cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0)); - entity.setStep(cursor.getInt(offset + 1)); - entity.setHAngle(cursor.getInt(offset + 2)); - entity.setVAngle(cursor.getInt(offset + 3)); - } - - @Override - protected final Long updateKeyAfterInsert(CameraPointBean entity, long rowId) { - entity.setId(rowId); - return rowId; - } - - @Override - public Long getKey(CameraPointBean entity) { - if (entity != null) { - return entity.getId(); - } else { - return null; - } - } - - @Override - public boolean hasKey(CameraPointBean entity) { - return entity.getId() != null; - } - - @Override - protected final boolean isEntityUpdateable() { - return true; - } - -} diff --git a/app/src/main/java/com/casic/endoscope/greendao/DaoMaster.java b/app/src/main/java/com/casic/endoscope/greendao/DaoMaster.java index 5d4fa30..a455fd0 100644 --- a/app/src/main/java/com/casic/endoscope/greendao/DaoMaster.java +++ b/app/src/main/java/com/casic/endoscope/greendao/DaoMaster.java @@ -13,25 +13,20 @@ // THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. - /** * Master of DAO (schema version 1): knows all DAOs. */ public class DaoMaster extends AbstractDaoMaster { public static final int SCHEMA_VERSION = 1; - /** - * Creates underlying database table using DAOs. - */ + /** Creates underlying database table using DAOs. */ public static void createAllTables(Database db, boolean ifNotExists) { - CameraPointBeanDao.createTable(db, ifNotExists); + GasValueBeanDao.createTable(db, ifNotExists); } - /** - * Drops underlying database table using DAOs. - */ + /** Drops underlying database table using DAOs. */ public static void dropAllTables(Database db, boolean ifExists) { - CameraPointBeanDao.dropTable(db, ifExists); + GasValueBeanDao.dropTable(db, ifExists); } /** @@ -50,7 +45,7 @@ public DaoMaster(Database db) { super(db, SCHEMA_VERSION); - registerDaoClass(CameraPointBeanDao.class); + registerDaoClass(GasValueBeanDao.class); } public DaoSession newSession() { @@ -80,9 +75,7 @@ } } - /** - * WARNING: Drops all table on Upgrade! Use only during development. - */ + /** WARNING: Drops all table on Upgrade! Use only during development. */ public static class DevOpenHelper extends OpenHelper { public DevOpenHelper(Context context, String name) { super(context, name); diff --git a/app/src/main/java/com/casic/endoscope/greendao/DaoSession.java b/app/src/main/java/com/casic/endoscope/greendao/DaoSession.java index ed2f9c0..259243d 100644 --- a/app/src/main/java/com/casic/endoscope/greendao/DaoSession.java +++ b/app/src/main/java/com/casic/endoscope/greendao/DaoSession.java @@ -1,6 +1,6 @@ package com.casic.endoscope.greendao; -import com.casic.endoscope.bean.CameraPointBean; +import com.casic.endoscope.bean.GasValueBean; import org.greenrobot.greendao.AbstractDao; import org.greenrobot.greendao.AbstractDaoSession; @@ -19,28 +19,28 @@ */ public class DaoSession extends AbstractDaoSession { - private final DaoConfig cameraPointBeanDaoConfig; + private final DaoConfig gasValueBeanDaoConfig; - private final CameraPointBeanDao cameraPointBeanDao; + private final GasValueBeanDao gasValueBeanDao; public DaoSession(Database db, IdentityScopeType type, Map>, DaoConfig> daoConfigMap) { super(db); - cameraPointBeanDaoConfig = daoConfigMap.get(CameraPointBeanDao.class).clone(); - cameraPointBeanDaoConfig.initIdentityScope(type); + gasValueBeanDaoConfig = daoConfigMap.get(GasValueBeanDao.class).clone(); + gasValueBeanDaoConfig.initIdentityScope(type); - cameraPointBeanDao = new CameraPointBeanDao(cameraPointBeanDaoConfig, this); + gasValueBeanDao = new GasValueBeanDao(gasValueBeanDaoConfig, this); - registerDao(CameraPointBean.class, cameraPointBeanDao); + registerDao(GasValueBean.class, gasValueBeanDao); } public void clear() { - cameraPointBeanDaoConfig.clearIdentityScope(); + gasValueBeanDaoConfig.clearIdentityScope(); } - public CameraPointBeanDao getCameraPointBeanDao() { - return cameraPointBeanDao; + public GasValueBeanDao getGasValueBeanDao() { + return gasValueBeanDao; } } diff --git a/app/src/main/java/com/casic/endoscope/greendao/GasValueBeanDao.java b/app/src/main/java/com/casic/endoscope/greendao/GasValueBeanDao.java new file mode 100644 index 0000000..5149375 --- /dev/null +++ b/app/src/main/java/com/casic/endoscope/greendao/GasValueBeanDao.java @@ -0,0 +1,149 @@ +package com.casic.endoscope.greendao; + +import android.database.Cursor; +import android.database.sqlite.SQLiteStatement; + +import com.casic.endoscope.bean.GasValueBean; + +import org.greenrobot.greendao.AbstractDao; +import org.greenrobot.greendao.Property; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.database.DatabaseStatement; +import org.greenrobot.greendao.internal.DaoConfig; + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. +/** + * DAO for table "GAS_VALUE_BEAN". +*/ +public class GasValueBeanDao extends AbstractDao { + + public static final String TABLENAME = "GAS_VALUE_BEAN"; + + /** + * Properties of entity GasValueBean.
+ * Can be used for QueryBuilder and for referencing column names. + */ + public static class Properties { + public final static Property Id = new Property(0, Long.class, "id", true, "_id"); + public final static Property Time = new Property(1, String.class, "time", false, "TIME"); + public final static Property Value = new Property(2, int.class, "value", false, "VALUE"); + public final static Property Location = new Property(3, String.class, "location", false, "LOCATION"); + } + + + public GasValueBeanDao(DaoConfig config) { + super(config); + } + + public GasValueBeanDao(DaoConfig config, DaoSession daoSession) { + super(config, daoSession); + } + + /** Creates the underlying database table. */ + public static void createTable(Database db, boolean ifNotExists) { + String constraint = ifNotExists? "IF NOT EXISTS ": ""; + db.execSQL("CREATE TABLE " + constraint + "\"GAS_VALUE_BEAN\" (" + // + "\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id + "\"TIME\" TEXT," + // 1: time + "\"VALUE\" INTEGER NOT NULL ," + // 2: value + "\"LOCATION\" TEXT);"); // 3: location + } + + /** Drops the underlying database table. */ + public static void dropTable(Database db, boolean ifExists) { + String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"GAS_VALUE_BEAN\""; + db.execSQL(sql); + } + + @Override + protected final void bindValues(DatabaseStatement stmt, GasValueBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String time = entity.getTime(); + if (time != null) { + stmt.bindString(2, time); + } + stmt.bindLong(3, entity.getValue()); + + String location = entity.getLocation(); + if (location != null) { + stmt.bindString(4, location); + } + } + + @Override + protected final void bindValues(SQLiteStatement stmt, GasValueBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String time = entity.getTime(); + if (time != null) { + stmt.bindString(2, time); + } + stmt.bindLong(3, entity.getValue()); + + String location = entity.getLocation(); + if (location != null) { + stmt.bindString(4, location); + } + } + + @Override + public Long readKey(Cursor cursor, int offset) { + return cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0); + } + + @Override + public GasValueBean readEntity(Cursor cursor, int offset) { + GasValueBean entity = new GasValueBean( // + cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id + cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // time + cursor.getInt(offset + 2), // value + cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3) // location + ); + return entity; + } + + @Override + public void readEntity(Cursor cursor, GasValueBean entity, int offset) { + entity.setId(cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0)); + entity.setTime(cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1)); + entity.setValue(cursor.getInt(offset + 2)); + entity.setLocation(cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3)); + } + + @Override + protected final Long updateKeyAfterInsert(GasValueBean entity, long rowId) { + entity.setId(rowId); + return rowId; + } + + @Override + public Long getKey(GasValueBean entity) { + if(entity != null) { + return entity.getId(); + } else { + return null; + } + } + + @Override + public boolean hasKey(GasValueBean entity) { + return entity.getId() != null; + } + + @Override + protected final boolean isEntityUpdateable() { + return true; + } + +} diff --git a/app/src/main/java/com/casic/endoscope/utils/DataBaseManager.kt b/app/src/main/java/com/casic/endoscope/utils/DataBaseManager.kt index a593a5b..c683db1 100644 --- a/app/src/main/java/com/casic/endoscope/utils/DataBaseManager.kt +++ b/app/src/main/java/com/casic/endoscope/utils/DataBaseManager.kt @@ -1,8 +1,6 @@ package com.casic.endoscope.utils import com.casic.endoscope.base.BaseApplication -import com.casic.endoscope.bean.CameraPointBean -import com.casic.endoscope.greendao.CameraPointBeanDao class DataBaseManager private constructor() { @@ -13,31 +11,5 @@ } } - private var cameraPointDao = BaseApplication.get().getDaoSession().cameraPointBeanDao - - fun cacheCameraPoint(step: Int, h: Int, v: Int) { - val bean = CameraPointBean() - bean.step = step - bean.hAngle = h - bean.vAngle = v - cameraPointDao.insert(bean) - } - - fun deleteCameraPoints(beans: MutableList) { - beans.forEach { - cameraPointDao.delete(it) - } - } - - fun deleteAllCameraPoint() { - cameraPointDao.deleteAll() - } - - fun queryCameraPointById(id: Long): CameraPointBean { - return cameraPointDao.queryBuilder() - .where(CameraPointBeanDao.Properties.Id.eq(id)) - .unique() - } - - fun loadAllCameraPoint(): MutableList = cameraPointDao.loadAll() + private var gasValueBeanDao = BaseApplication.get().getDaoSession().gasValueBeanDao } \ No newline at end of file diff --git a/app/src/main/java/com/casic/endoscope/utils/EndoscopeDevOpenHelper.kt b/app/src/main/java/com/casic/endoscope/utils/EndoscopeDevOpenHelper.kt index 507b1ff..fd87f0f 100644 --- a/app/src/main/java/com/casic/endoscope/utils/EndoscopeDevOpenHelper.kt +++ b/app/src/main/java/com/casic/endoscope/utils/EndoscopeDevOpenHelper.kt @@ -2,8 +2,8 @@ import android.content.Context import android.database.sqlite.SQLiteDatabase.CursorFactory -import com.casic.endoscope.greendao.CameraPointBeanDao import com.casic.endoscope.greendao.DaoMaster +import com.casic.endoscope.greendao.GasValueBeanDao import com.github.yuweiguocn.library.greendao.MigrationHelper import com.github.yuweiguocn.library.greendao.MigrationHelper.ReCreateAllTableListener import org.greenrobot.greendao.database.Database @@ -22,7 +22,7 @@ DaoMaster.dropAllTables(db, ifExists) } }, - CameraPointBeanDao::class.java + GasValueBeanDao::class.java ) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/endoscope/view/MainActivity.kt b/app/src/main/java/com/casic/endoscope/view/MainActivity.kt index 0fe757e..c4509b0 100644 --- a/app/src/main/java/com/casic/endoscope/view/MainActivity.kt +++ b/app/src/main/java/com/casic/endoscope/view/MainActivity.kt @@ -15,8 +15,6 @@ import android.view.SurfaceHolder import android.view.View import androidx.lifecycle.lifecycleScope -import com.casic.endoscope.adapter.CameraPointAdapter -import com.casic.endoscope.bean.CameraPointBean import com.casic.endoscope.databinding.ActivityMainBinding import com.casic.endoscope.extensions.check import com.casic.endoscope.extensions.convertValue @@ -28,14 +26,12 @@ import com.casic.endoscope.extensions.init import com.casic.endoscope.extensions.toTime import com.casic.endoscope.service.VideoTranscodeService -import com.casic.endoscope.utils.DataBaseManager import com.casic.endoscope.utils.ProjectConstant import com.casic.endoscope.utils.ble.BleDeviceManager import com.casic.endoscope.utils.ble.OnDeviceConnectListener import com.casic.endoscope.utils.ble.OnDeviceDiscoveredListener import com.casic.endoscope.utils.hk.MessageCodeHub import com.casic.endoscope.utils.hk.SDKGuider -import com.casic.endoscope.widgets.AddCameraPointDialog import com.casic.endoscope.widgets.BluetoothDeviceDialog import com.casic.endoscope.widgets.LineChartMarkerView import com.github.mikephil.charting.data.Entry @@ -55,10 +51,8 @@ import com.pengxh.kt.lite.extensions.timestampToTime import com.pengxh.kt.lite.utils.LoadingDialogHub import com.pengxh.kt.lite.utils.WeakReferenceHandler -import com.pengxh.kt.lite.widget.SteeringWheelView import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch -import kotlinx.coroutines.withContext import java.text.SimpleDateFormat import java.util.Date import java.util.Locale @@ -101,17 +95,11 @@ //焦距按钮是否已松开 private var isScaleButtonUp = true - //是否拍照成功 - private var isCaptureSuccess = true - private var timer: Timer? = null private var timerTask: TimerTask? = null private var seconds = 0L - private var dataBeans: MutableList = ArrayList() - private var selectedItems: MutableList = ArrayList() private var inputVideoPath = "" private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var dataAdapter: CameraPointAdapter private lateinit var serviceIntent: Intent private lateinit var dataSet: LineDataSet private lateinit var lineData: LineData @@ -123,8 +111,6 @@ override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) - dataBeans = DataBaseManager.get.loadAllCameraPoint() - //显示数据 weakReferenceHandler.sendEmptyMessage(messageCode) @@ -147,13 +133,7 @@ override fun handleMessage(msg: Message): Boolean { if (msg.what == messageCode) { //绑定数据 - dataAdapter = CameraPointAdapter(this, dataBeans) - binding.recyclerView.adapter = dataAdapter - dataAdapter.setOnItemCheckedListener(object : CameraPointAdapter.OnItemCheckedListener { - override fun onItemChecked(position: Int, items: ArrayList) { - selectedItems = items - } - }) + } return true } @@ -209,6 +189,180 @@ } } + binding.upScaleButton.setOnTouchListener { _, event -> + when (event.action) { + MotionEvent.ACTION_DOWN -> { + if (isPreviewSuccess && isScaleButtonUp) { + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_IN, 0) + isScaleButtonUp = false + } + } + + MotionEvent.ACTION_UP -> { + isScaleButtonUp = true + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_IN, 1) + } + } + false + } + + binding.downScaleButton.setOnTouchListener { _, event -> + when (event.action) { + MotionEvent.ACTION_DOWN -> { + if (isPreviewSuccess && isScaleButtonUp) { + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_OUT, 0) + isScaleButtonUp = false + } + } + + MotionEvent.ACTION_UP -> { + isScaleButtonUp = true + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_OUT, 1) + } + } + false + } + + binding.topButton.setOnTouchListener { _, motionEvent -> + when (motionEvent.action) { + MotionEvent.ACTION_DOWN -> { + if (isPreviewSuccess && isActionUp) { + hkSDK.NET_DVR_PTZControlWithSpeed( + previewHandle, PTZCommand.TILT_UP, 0, selectedSpeed + ) + isActionUp = false + } + } + + MotionEvent.ACTION_UP -> { + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.TILT_UP, 1) + isActionUp = true + } + } + false + } + + binding.centerButton.setOnClickListener { + if (!isPreviewSuccess) { + val deviceItem = SDKGuider.sdkGuider.devManageGuider.DeviceItem() + deviceItem.szDevName = "" + deviceItem.devNetInfo = SDKGuider.sdkGuider.devManageGuider.DevNetInfo( + ProjectConstant.HK_NET_IP, + ProjectConstant.HK_NET_PORT, + ProjectConstant.HK_NET_USERNAME, + ProjectConstant.HK_NET_PASSWORD + ) + if (deviceItem.szDevName.isEmpty()) { + deviceItem.szDevName = deviceItem.devNetInfo.szIp + } + val loginV40Jna = SDKGuider.sdkGuider.devManageGuider.login_v40_jna( + deviceItem.szDevName, deviceItem.devNetInfo + ) + if (loginV40Jna) { + //配置设备通道 + try { + val deviceInfo = SDKGuider.sdkGuider.devManageGuider.devList[0] + returnUserId = deviceInfo.szUserId + + aChannelNum = + deviceInfo.deviceInfoV40_jna.struDeviceV30.byChanNum.toInt() + startAChannel = + deviceInfo.deviceInfoV40_jna.struDeviceV30.byStartChan.toInt() + + dChannelNum = + deviceInfo.deviceInfoV40_jna.struDeviceV30.byIPChanNum + deviceInfo.deviceInfoV40_jna.struDeviceV30.byHighDChanNum * 256 + startDChannel = + deviceInfo.deviceInfoV40_jna.struDeviceV30.byStartChan.toInt() + + var iAnalogStartChan = startAChannel + var iDigitalStartChan = startDChannel + + val channelList = ArrayList() + + for (i in 0 until aChannelNum) { + channelList.add("ACamera_$iAnalogStartChan") + iAnalogStartChan++ + } + + for (i in 0 until dChannelNum) { + channelList.add("DCamera_$iDigitalStartChan") + iDigitalStartChan++ + } + selectChannel = Integer.valueOf(channelList[0].getChannel()) + + val streamList = ArrayList() + streamList.add("main_stream") + streamList.add("sub_stream") + streamList.add("third_stream") + + //开始预览 + if (previewHandle != -1) { + SDKGuider.sdkGuider.devPreviewGuider.RealPlay_Stop_jni(previewHandle) + } + val strutPlayInfo = NET_DVR_PREVIEWINFO() + strutPlayInfo.lChannel = selectChannel + strutPlayInfo.dwStreamType = 1 + strutPlayInfo.bBlocked = 1 + strutPlayInfo.hHwnd = binding.surfaceView.holder + previewHandle = SDKGuider.sdkGuider.devPreviewGuider.RealPlay_V40_jni( + returnUserId, strutPlayInfo, null + ) + if (previewHandle < 0) { + Log.d(kTag, "initEvent: Err:${MessageCodeHub.getErrorCode()}") + return@setOnClickListener + } + isPreviewSuccess = true + "预览开启成功".show(context) + //开始计时 + timer = Timer() + timerTask = object : TimerTask() { + override fun run() { + seconds++ + lifecycleScope.launch(Dispatchers.Main) { + binding.runningTimeView.text = seconds.toTime() + } + } + } + timer?.schedule(timerTask, 0, 1000) + } catch (e: IndexOutOfBoundsException) { + e.printStackTrace() + "设备未正常连接,无法开启预览".show(context) + } + } else { + "设备登陆失败".show(context) + } + } else { + if (!SDKGuider.sdkGuider.devPreviewGuider.RealPlay_Stop_jni(previewHandle)) { + return@setOnClickListener + } + previewHandle = -1 + isPreviewSuccess = false + "预览关闭成功".show(context) + //停止计时 + timerTask?.cancel() + timer?.cancel() + } + } + + binding.bottomButton.setOnTouchListener { _, motionEvent -> + when (motionEvent.action) { + MotionEvent.ACTION_DOWN -> { + if (isPreviewSuccess && isActionUp) { + hkSDK.NET_DVR_PTZControlWithSpeed( + previewHandle, PTZCommand.TILT_DOWN, 0, selectedSpeed + ) + isActionUp = false + } + } + + MotionEvent.ACTION_UP -> { + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.TILT_DOWN, 1) + isActionUp = true + } + } + false + } + //单张拍照 binding.imageButton.setOnClickListener { if (isPreviewSuccess) { @@ -252,278 +406,8 @@ true } - //连续拍照 - binding.multipleImageButton.setOnClickListener { - if (dataBeans.isEmpty()) { - "请先设置连续拍照步骤".show(this) - return@setOnClickListener - } - if (isPreviewSuccess) { - lifecycleScope.launch(Dispatchers.IO) { - dataBeans.forEach { - //再拍照 - if (isCaptureSuccess) { - isCaptureSuccess = false - - //先执行角度 - executeAngle(it.hAngle, it.vAngle) - - withContext(Dispatchers.Main) { - "抓取步骤${it.step}画面".show(context) - } - - val strJpeg = NET_DVR_JPEGPARA() - strJpeg.wPicQuality = 1 - strJpeg.wPicSize = 2 - - val imagePath = - "/${createImageFileDir()}/${timeFormat.format(Date())}.png" - hkSDK.NET_DVR_CaptureJPEGPicture( - returnUserId, selectChannel, strJpeg, imagePath - ) - - isCaptureSuccess = MessageCodeHub.getErrorCode() == 0 - } - } - withContext(Dispatchers.Main) { - "连续抓取画面完成".show(context) - } - } - } else { - "摄像头预览未打开,无法拍照".show(this) - } - } - - binding.addButton.setOnClickListener { - val step = if (dataBeans.isEmpty()) { - 0 - } else { - dataBeans.last().step - } - AddCameraPointDialog.Builder().setContext(this).setLastStep(step) - .setNegativeButton("取消").setPositiveButton("添加") - .setOnDialogButtonClickListener(object : - AddCameraPointDialog.OnDialogButtonClickListener { - override fun onConfirmClick(step: Int, hAngle: Int, vAngle: Int) { - DataBaseManager.get.cacheCameraPoint(step, hAngle, vAngle) - dataBeans = DataBaseManager.get.loadAllCameraPoint() - dataAdapter.setRefreshData(dataBeans) - } - - override fun onCancelClick() { - - } - }).build().show() - } - - binding.deleteButton.setOnClickListener { - if (selectedItems.isEmpty()) { - "请先选择要删除的步骤".show(this) - return@setOnClickListener - } - DataBaseManager.get.deleteCameraPoints(selectedItems) - dataBeans = DataBaseManager.get.loadAllCameraPoint() - dataAdapter.setRefreshData(dataBeans) - selectedItems.clear() - } - - binding.steeringWheelView.setOnWheelTouchListener(object : - SteeringWheelView.OnWheelTouchListener { - override fun onCenterClicked() { - if (!isPreviewSuccess) { - val deviceItem = SDKGuider.sdkGuider.devManageGuider.DeviceItem() - deviceItem.szDevName = "" - deviceItem.devNetInfo = SDKGuider.sdkGuider.devManageGuider.DevNetInfo( - ProjectConstant.HK_NET_IP, - ProjectConstant.HK_NET_PORT, - ProjectConstant.HK_NET_USERNAME, - ProjectConstant.HK_NET_PASSWORD - ) - if (deviceItem.szDevName.isEmpty()) { - deviceItem.szDevName = deviceItem.devNetInfo.szIp - } - val loginV40Jna = SDKGuider.sdkGuider.devManageGuider.login_v40_jna( - deviceItem.szDevName, deviceItem.devNetInfo - ) - if (loginV40Jna) { - //配置设备通道 - try { - val deviceInfo = SDKGuider.sdkGuider.devManageGuider.devList[0] - returnUserId = deviceInfo.szUserId - - aChannelNum = - deviceInfo.deviceInfoV40_jna.struDeviceV30.byChanNum.toInt() - startAChannel = - deviceInfo.deviceInfoV40_jna.struDeviceV30.byStartChan.toInt() - - dChannelNum = - deviceInfo.deviceInfoV40_jna.struDeviceV30.byIPChanNum + deviceInfo.deviceInfoV40_jna.struDeviceV30.byHighDChanNum * 256 - startDChannel = - deviceInfo.deviceInfoV40_jna.struDeviceV30.byStartChan.toInt() - - var iAnalogStartChan = startAChannel - var iDigitalStartChan = startDChannel - - val channelList = ArrayList() - - for (i in 0 until aChannelNum) { - channelList.add("ACamera_$iAnalogStartChan") - iAnalogStartChan++ - } - - for (i in 0 until dChannelNum) { - channelList.add("DCamera_$iDigitalStartChan") - iDigitalStartChan++ - } - selectChannel = Integer.valueOf(channelList[0].getChannel()) - - val streamList = ArrayList() - streamList.add("main_stream") - streamList.add("sub_stream") - streamList.add("third_stream") - - //开始预览 - if (previewHandle != -1) { - SDKGuider.sdkGuider.devPreviewGuider.RealPlay_Stop_jni(previewHandle) - } - val strutPlayInfo = NET_DVR_PREVIEWINFO() - strutPlayInfo.lChannel = selectChannel - strutPlayInfo.dwStreamType = 1 - strutPlayInfo.bBlocked = 1 - strutPlayInfo.hHwnd = binding.surfaceView.holder - previewHandle = SDKGuider.sdkGuider.devPreviewGuider.RealPlay_V40_jni( - returnUserId, strutPlayInfo, null - ) - if (previewHandle < 0) { - Log.d(kTag, "initEvent: Err:${MessageCodeHub.getErrorCode()}") - return - } - isPreviewSuccess = true - "预览开启成功".show(context) - //开始计时 - timer = Timer() - timerTask = object : TimerTask() { - override fun run() { - seconds++ - lifecycleScope.launch(Dispatchers.Main) { - binding.runningTimeView.text = seconds.toTime() - } - } - } - timer?.schedule(timerTask, 0, 1000) - } catch (e: IndexOutOfBoundsException) { - e.printStackTrace() - "设备未正常连接,无法开启预览".show(context) - } - } else { - "设备登陆失败".show(context) - } - } else { - if (!SDKGuider.sdkGuider.devPreviewGuider.RealPlay_Stop_jni(previewHandle)) { - return - } - previewHandle = -1 - isPreviewSuccess = false - "预览关闭成功".show(context) - //停止计时 - timerTask?.cancel() - timer?.cancel() - } - } - - override fun onLeftTurn() { - if (isPreviewSuccess && isActionUp) { - hkSDK.NET_DVR_PTZControlWithSpeed( - previewHandle, PTZCommand.PAN_LEFT, 0, selectedSpeed - ) - isActionUp = false - } - } - - override fun onTopTurn() { - if (isPreviewSuccess && isActionUp) { - hkSDK.NET_DVR_PTZControlWithSpeed( - previewHandle, PTZCommand.TILT_UP, 0, selectedSpeed - ) - isActionUp = false - } - } - - override fun onRightTurn() { - if (isPreviewSuccess && isActionUp) { - hkSDK.NET_DVR_PTZControlWithSpeed( - previewHandle, PTZCommand.PAN_RIGHT, 0, selectedSpeed - ) - isActionUp = false - } - } - - override fun onBottomTurn() { - if (isPreviewSuccess && isActionUp) { - hkSDK.NET_DVR_PTZControlWithSpeed( - previewHandle, PTZCommand.TILT_DOWN, 0, selectedSpeed - ) - isActionUp = false - } - } - - override fun onActionTurnUp(dir: SteeringWheelView.Direction) { - when (dir) { - SteeringWheelView.Direction.LEFT -> { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.PAN_LEFT, 1) - isActionUp = true - } - - SteeringWheelView.Direction.TOP -> { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.TILT_UP, 1) - isActionUp = true - } - - SteeringWheelView.Direction.RIGHT -> { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.PAN_RIGHT, 1) - isActionUp = true - } - - SteeringWheelView.Direction.BOTTOM -> { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.TILT_DOWN, 1) - isActionUp = true - } - } - } - }) - - binding.upScaleButton.setOnTouchListener { _, event -> - when (event.action) { - MotionEvent.ACTION_DOWN -> { - if (isPreviewSuccess && isScaleButtonUp) { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_IN, 0) - isScaleButtonUp = false - } - } - - MotionEvent.ACTION_UP -> { - isScaleButtonUp = true - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_IN, 1) - } - } - false - } - - binding.downScaleButton.setOnTouchListener { _, event -> - when (event.action) { - MotionEvent.ACTION_DOWN -> { - if (isPreviewSuccess && isScaleButtonUp) { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_OUT, 0) - isScaleButtonUp = false - } - } - - MotionEvent.ACTION_UP -> { - isScaleButtonUp = true - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_OUT, 1) - } - } - false + binding.resetButton.setOnClickListener { + executeAngle(0, 0) } } diff --git a/app/src/main/res/drawable/bg_solid_layout_blue_10.xml b/app/src/main/res/drawable/bg_solid_layout_blue_10.xml new file mode 100644 index 0000000..b7e06e3 --- /dev/null +++ b/app/src/main/res/drawable/bg_solid_layout_blue_10.xml @@ -0,0 +1,7 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_stroke_layout_blue_10.xml b/app/src/main/res/drawable/bg_stroke_layout_blue_10.xml deleted file mode 100644 index d6f55c9..0000000 --- a/app/src/main/res/drawable/bg_stroke_layout_blue_10.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_camera.xml b/app/src/main/res/drawable/ic_camera.xml new file mode 100644 index 0000000..1f7ab22 --- /dev/null +++ b/app/src/main/res/drawable/ic_camera.xml @@ -0,0 +1,15 @@ + + + + + diff --git a/app/src/main/res/drawable/ic_dir_down.xml b/app/src/main/res/drawable/ic_dir_down.xml deleted file mode 100644 index e6807dc..0000000 --- a/app/src/main/res/drawable/ic_dir_down.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_dir_left.xml b/app/src/main/res/drawable/ic_dir_left.xml deleted file mode 100644 index 12b2237..0000000 --- a/app/src/main/res/drawable/ic_dir_left.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_dir_right.xml b/app/src/main/res/drawable/ic_dir_right.xml deleted file mode 100644 index 96539aa..0000000 --- a/app/src/main/res/drawable/ic_dir_right.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_dir_up.xml b/app/src/main/res/drawable/ic_dir_up.xml deleted file mode 100644 index e7a153e..0000000 --- a/app/src/main/res/drawable/ic_dir_up.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_down.xml b/app/src/main/res/drawable/ic_down.xml new file mode 100644 index 0000000..9fcd974 --- /dev/null +++ b/app/src/main/res/drawable/ic_down.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_minus.xml b/app/src/main/res/drawable/ic_minus.xml index a399f5f..2942b80 100644 --- a/app/src/main/res/drawable/ic_minus.xml +++ b/app/src/main/res/drawable/ic_minus.xml @@ -1,9 +1,9 @@ + android:fillColor="#1875F0" + android:pathData="M864,480H160c-17.6,0 -32,14.4 -32,32s14.4,32 32,32h704c17.6,0 32,-14.4 32,-32s-14.4,-32 -32,-32z" /> diff --git a/app/src/main/res/drawable/ic_off.xml b/app/src/main/res/drawable/ic_off.xml new file mode 100644 index 0000000..1940f16 --- /dev/null +++ b/app/src/main/res/drawable/ic_off.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/ic_picture.xml b/app/src/main/res/drawable/ic_picture.xml new file mode 100644 index 0000000..a781b4c --- /dev/null +++ b/app/src/main/res/drawable/ic_picture.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/ic_plus.xml b/app/src/main/res/drawable/ic_plus.xml index 49d9fb0..db4941d 100644 --- a/app/src/main/res/drawable/ic_plus.xml +++ b/app/src/main/res/drawable/ic_plus.xml @@ -1,9 +1,9 @@ + android:fillColor="#1875F0" + android:pathData="M864,480H544V160c0,-17.6 -14.4,-32 -32,-32s-32,14.4 -32,32v320H160c-17.6,0 -32,14.4 -32,32s14.4,32 32,32h320v320c0,17.6 14.4,32 32,32s32,-14.4 32,-32V544h320c17.6,0 32,-14.4 32,-32s-14.4,-32 -32,-32z" /> diff --git a/app/src/main/res/drawable/ic_reset.xml b/app/src/main/res/drawable/ic_reset.xml new file mode 100644 index 0000000..969dccd --- /dev/null +++ b/app/src/main/res/drawable/ic_reset.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_up.xml b/app/src/main/res/drawable/ic_up.xml new file mode 100644 index 0000000..3f4bca9 --- /dev/null +++ b/app/src/main/res/drawable/ic_up.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/selector_scale_button.xml b/app/src/main/res/drawable/selector_scale_button.xml index 7273700..4efba9d 100644 --- a/app/src/main/res/drawable/selector_scale_button.xml +++ b/app/src/main/res/drawable/selector_scale_button.xml @@ -2,7 +2,7 @@ - + diff --git a/app/src/main/res/layout/activity_big_image.xml b/app/src/main/res/layout/activity_big_image.xml index 228c2c4..b0b948c 100644 --- a/app/src/main/res/layout/activity_big_image.xml +++ b/app/src/main/res/layout/activity_big_image.xml @@ -26,7 +26,7 @@ android:layout_height="wrap_content" android:layout_centerVertical="true" android:layout_marginStart="@dimen/lib_dp_10" - android:src="@drawable/ic_left_white" /> + android:src="@drawable/ic_title_left" /> @@ -45,7 +44,8 @@ android:id="@+id/searchBleButton" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_marginEnd="@dimen/dp_3" + android:layout_margin="@dimen/dp_7" + android:background="@drawable/selector_scale_button" android:text="搜索蓝牙" />
@@ -70,119 +70,13 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -192,6 +86,28 @@ android:layout_height="match_parent" /> + + + + + + + - - - - - - - - + android:text="(长按照片可操作)" + android:textColor="@color/hintColor" /> + + app:layoutManager="androidx.recyclerview.widget.GridLayoutManager" + app:spanCount="2" />
@@ -288,106 +188,136 @@ android:layout_height="match_parent" android:background="@color/backgroundColor" android:gravity="center_horizontal" - android:orientation="horizontal" - android:paddingVertical="@dimen/dp_10"> + android:orientation="vertical"> + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginHorizontal="@dimen/dp_10" + android:layout_marginVertical="@dimen/dp_5" + android:orientation="horizontal"> - - - - - - - - - - - - - - - - + + android:orientation="horizontal"> - - - + android:layout_marginVertical="@dimen/dp_10" + android:layout_marginStart="@dimen/dp_10" + android:layout_marginEnd="@dimen/dp_20" + android:layout_weight="1" + android:background="@drawable/bg_solid_layout_blue_10"> + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/app/src/main/res/layout/item_point_list_rv.xml b/app/src/main/res/layout/item_point_list_rv.xml deleted file mode 100644 index 8ac01a8..0000000 --- a/app/src/main/res/layout/item_point_list_rv.xml +++ /dev/null @@ -1,45 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index c2a2c53..64d4d0c 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -72,7 +72,7 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5.4' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.8' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.cardview:cardview:1.0.0' diff --git a/app/src/main/java/com/casic/endoscope/adapter/CameraPointAdapter.kt b/app/src/main/java/com/casic/endoscope/adapter/CameraPointAdapter.kt deleted file mode 100644 index fe404b2..0000000 --- a/app/src/main/java/com/casic/endoscope/adapter/CameraPointAdapter.kt +++ /dev/null @@ -1,78 +0,0 @@ -package com.casic.endoscope.adapter - -import android.annotation.SuppressLint -import android.content.Context -import android.graphics.Color -import android.view.LayoutInflater -import android.view.ViewGroup -import android.widget.LinearLayout -import androidx.recyclerview.widget.RecyclerView -import com.casic.endoscope.R -import com.casic.endoscope.bean.CameraPointBean -import com.pengxh.kt.lite.adapter.ViewHolder -import com.pengxh.kt.lite.extensions.convertColor - -class CameraPointAdapter( - private val context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var multipleSelected = mutableSetOf() - private var selectedItems = ArrayList() - - override fun getItemCount(): Int = dataRows.size - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { - return ViewHolder( - LayoutInflater.from(context).inflate(R.layout.item_point_list_rv, parent, false) - ) - } - - @SuppressLint("NotifyDataSetChanged") - fun setRefreshData(dataRows: MutableList) { - this.dataRows.clear() - this.dataRows.addAll(dataRows) - notifyDataSetChanged() - multipleSelected.clear() - selectedItems.clear() - } - - override fun onBindViewHolder(holder: ViewHolder, position: Int) { - val item = dataRows[position] - holder.setText(R.id.stepNameView, "步骤 ${item.step}") - .setText(R.id.hAngleView, "水平角度 ${item.hAngle}°") - .setText(R.id.vAngleView, "垂直角度 ${item.vAngle}°") - - val linearLayout = holder.itemView.findViewById(R.id.rootView) - //item背景色 - if (position % 2 == 0) { - linearLayout.setBackgroundColor(Color.parseColor("#C8E3F4")) - } else { - linearLayout.setBackgroundColor(R.color.backgroundColor.convertColor(context)) - } - - holder.itemView.isSelected = multipleSelected.contains(position) - holder.itemView.setOnClickListener { - if (multipleSelected.contains(position)) { - multipleSelected.remove(position) - selectedItems.remove(dataRows[position]) - holder.itemView.isSelected = false - } else { - multipleSelected.add(position) - selectedItems.add(dataRows[position]) - holder.itemView.isSelected = true - } - - itemCheckedListener?.onItemChecked(position, selectedItems) - } - } - - private var itemCheckedListener: OnItemCheckedListener? = null - - interface OnItemCheckedListener { - fun onItemChecked(position: Int, items: ArrayList) - } - - fun setOnItemCheckedListener(listener: OnItemCheckedListener) { - itemCheckedListener = listener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/endoscope/bean/CameraPointBean.java b/app/src/main/java/com/casic/endoscope/bean/CameraPointBean.java deleted file mode 100644 index 3a20d82..0000000 --- a/app/src/main/java/com/casic/endoscope/bean/CameraPointBean.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.casic.endoscope.bean; - -import org.greenrobot.greendao.annotation.Entity; -import org.greenrobot.greendao.annotation.Generated; -import org.greenrobot.greendao.annotation.Id; - -/** - * 必须是java,不能是kt - */ -@Entity -public class CameraPointBean { - - @Id(autoincrement = true) - private Long id;//主键自增 - - private int step;//步骤序号 - private int hAngle;//水平角度 - private int vAngle;//垂直角度 - - @Generated(hash = 1436018650) - public CameraPointBean(Long id, int step, int hAngle, int vAngle) { - this.id = id; - this.step = step; - this.hAngle = hAngle; - this.vAngle = vAngle; - } - - @Generated(hash = 44086073) - public CameraPointBean() { - } - - public Long getId() { - return this.id; - } - - public void setId(Long id) { - this.id = id; - } - - public int getStep() { - return this.step; - } - - public void setStep(int step) { - this.step = step; - } - - public int getHAngle() { - return this.hAngle; - } - - public void setHAngle(int hAngle) { - this.hAngle = hAngle; - } - - public int getVAngle() { - return this.vAngle; - } - - public void setVAngle(int vAngle) { - this.vAngle = vAngle; - } -} diff --git a/app/src/main/java/com/casic/endoscope/bean/GasValueBean.java b/app/src/main/java/com/casic/endoscope/bean/GasValueBean.java new file mode 100644 index 0000000..6537b9a --- /dev/null +++ b/app/src/main/java/com/casic/endoscope/bean/GasValueBean.java @@ -0,0 +1,63 @@ +package com.casic.endoscope.bean; + +import org.greenrobot.greendao.annotation.Entity; +import org.greenrobot.greendao.annotation.Generated; +import org.greenrobot.greendao.annotation.Id; + +/** + * 必须是java,不能是kt + * 甲烷浓度表结构 + */ +@Entity +public class GasValueBean { + @Id(autoincrement = true) + private Long id;//主键自增 + + private String time;//采集浓度的时间 + private int value;//采集的浓度 + private String location;//浓度采集点位置 + + @Generated(hash = 663679791) + public GasValueBean(Long id, String time, int value, String location) { + this.id = id; + this.time = time; + this.value = value; + this.location = location; + } + + @Generated(hash = 291409217) + public GasValueBean() { + } + + public Long getId() { + return this.id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getTime() { + return this.time; + } + + public void setTime(String time) { + this.time = time; + } + + public int getValue() { + return this.value; + } + + public void setValue(int value) { + this.value = value; + } + + public String getLocation() { + return this.location; + } + + public void setLocation(String location) { + this.location = location; + } +} diff --git a/app/src/main/java/com/casic/endoscope/greendao/CameraPointBeanDao.java b/app/src/main/java/com/casic/endoscope/greendao/CameraPointBeanDao.java deleted file mode 100644 index 11bc932..0000000 --- a/app/src/main/java/com/casic/endoscope/greendao/CameraPointBeanDao.java +++ /dev/null @@ -1,138 +0,0 @@ -package com.casic.endoscope.greendao; - -import android.database.Cursor; -import android.database.sqlite.SQLiteStatement; - -import com.casic.endoscope.bean.CameraPointBean; - -import org.greenrobot.greendao.AbstractDao; -import org.greenrobot.greendao.Property; -import org.greenrobot.greendao.database.Database; -import org.greenrobot.greendao.database.DatabaseStatement; -import org.greenrobot.greendao.internal.DaoConfig; - -// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. - -/** - * DAO for table "CAMERA_POINT_BEAN". - */ -public class CameraPointBeanDao extends AbstractDao { - - public static final String TABLENAME = "CAMERA_POINT_BEAN"; - - /** - * Properties of entity CameraPointBean.
- * Can be used for QueryBuilder and for referencing column names. - */ - public static class Properties { - public final static Property Id = new Property(0, Long.class, "id", true, "_id"); - public final static Property Step = new Property(1, int.class, "step", false, "STEP"); - public final static Property HAngle = new Property(2, int.class, "hAngle", false, "H_ANGLE"); - public final static Property VAngle = new Property(3, int.class, "vAngle", false, "V_ANGLE"); - } - - - public CameraPointBeanDao(DaoConfig config) { - super(config); - } - - public CameraPointBeanDao(DaoConfig config, DaoSession daoSession) { - super(config, daoSession); - } - - /** - * Creates the underlying database table. - */ - public static void createTable(Database db, boolean ifNotExists) { - String constraint = ifNotExists ? "IF NOT EXISTS " : ""; - db.execSQL("CREATE TABLE " + constraint + "\"CAMERA_POINT_BEAN\" (" + // - "\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id - "\"STEP\" INTEGER NOT NULL ," + // 1: step - "\"H_ANGLE\" INTEGER NOT NULL ," + // 2: hAngle - "\"V_ANGLE\" INTEGER NOT NULL );"); // 3: vAngle - } - - /** - * Drops the underlying database table. - */ - public static void dropTable(Database db, boolean ifExists) { - String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"CAMERA_POINT_BEAN\""; - db.execSQL(sql); - } - - @Override - protected final void bindValues(DatabaseStatement stmt, CameraPointBean entity) { - stmt.clearBindings(); - - Long id = entity.getId(); - if (id != null) { - stmt.bindLong(1, id); - } - stmt.bindLong(2, entity.getStep()); - stmt.bindLong(3, entity.getHAngle()); - stmt.bindLong(4, entity.getVAngle()); - } - - @Override - protected final void bindValues(SQLiteStatement stmt, CameraPointBean entity) { - stmt.clearBindings(); - - Long id = entity.getId(); - if (id != null) { - stmt.bindLong(1, id); - } - stmt.bindLong(2, entity.getStep()); - stmt.bindLong(3, entity.getHAngle()); - stmt.bindLong(4, entity.getVAngle()); - } - - @Override - public Long readKey(Cursor cursor, int offset) { - return cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0); - } - - @Override - public CameraPointBean readEntity(Cursor cursor, int offset) { - CameraPointBean entity = new CameraPointBean( // - cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id - cursor.getInt(offset + 1), // step - cursor.getInt(offset + 2), // hAngle - cursor.getInt(offset + 3) // vAngle - ); - return entity; - } - - @Override - public void readEntity(Cursor cursor, CameraPointBean entity, int offset) { - entity.setId(cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0)); - entity.setStep(cursor.getInt(offset + 1)); - entity.setHAngle(cursor.getInt(offset + 2)); - entity.setVAngle(cursor.getInt(offset + 3)); - } - - @Override - protected final Long updateKeyAfterInsert(CameraPointBean entity, long rowId) { - entity.setId(rowId); - return rowId; - } - - @Override - public Long getKey(CameraPointBean entity) { - if (entity != null) { - return entity.getId(); - } else { - return null; - } - } - - @Override - public boolean hasKey(CameraPointBean entity) { - return entity.getId() != null; - } - - @Override - protected final boolean isEntityUpdateable() { - return true; - } - -} diff --git a/app/src/main/java/com/casic/endoscope/greendao/DaoMaster.java b/app/src/main/java/com/casic/endoscope/greendao/DaoMaster.java index 5d4fa30..a455fd0 100644 --- a/app/src/main/java/com/casic/endoscope/greendao/DaoMaster.java +++ b/app/src/main/java/com/casic/endoscope/greendao/DaoMaster.java @@ -13,25 +13,20 @@ // THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. - /** * Master of DAO (schema version 1): knows all DAOs. */ public class DaoMaster extends AbstractDaoMaster { public static final int SCHEMA_VERSION = 1; - /** - * Creates underlying database table using DAOs. - */ + /** Creates underlying database table using DAOs. */ public static void createAllTables(Database db, boolean ifNotExists) { - CameraPointBeanDao.createTable(db, ifNotExists); + GasValueBeanDao.createTable(db, ifNotExists); } - /** - * Drops underlying database table using DAOs. - */ + /** Drops underlying database table using DAOs. */ public static void dropAllTables(Database db, boolean ifExists) { - CameraPointBeanDao.dropTable(db, ifExists); + GasValueBeanDao.dropTable(db, ifExists); } /** @@ -50,7 +45,7 @@ public DaoMaster(Database db) { super(db, SCHEMA_VERSION); - registerDaoClass(CameraPointBeanDao.class); + registerDaoClass(GasValueBeanDao.class); } public DaoSession newSession() { @@ -80,9 +75,7 @@ } } - /** - * WARNING: Drops all table on Upgrade! Use only during development. - */ + /** WARNING: Drops all table on Upgrade! Use only during development. */ public static class DevOpenHelper extends OpenHelper { public DevOpenHelper(Context context, String name) { super(context, name); diff --git a/app/src/main/java/com/casic/endoscope/greendao/DaoSession.java b/app/src/main/java/com/casic/endoscope/greendao/DaoSession.java index ed2f9c0..259243d 100644 --- a/app/src/main/java/com/casic/endoscope/greendao/DaoSession.java +++ b/app/src/main/java/com/casic/endoscope/greendao/DaoSession.java @@ -1,6 +1,6 @@ package com.casic.endoscope.greendao; -import com.casic.endoscope.bean.CameraPointBean; +import com.casic.endoscope.bean.GasValueBean; import org.greenrobot.greendao.AbstractDao; import org.greenrobot.greendao.AbstractDaoSession; @@ -19,28 +19,28 @@ */ public class DaoSession extends AbstractDaoSession { - private final DaoConfig cameraPointBeanDaoConfig; + private final DaoConfig gasValueBeanDaoConfig; - private final CameraPointBeanDao cameraPointBeanDao; + private final GasValueBeanDao gasValueBeanDao; public DaoSession(Database db, IdentityScopeType type, Map>, DaoConfig> daoConfigMap) { super(db); - cameraPointBeanDaoConfig = daoConfigMap.get(CameraPointBeanDao.class).clone(); - cameraPointBeanDaoConfig.initIdentityScope(type); + gasValueBeanDaoConfig = daoConfigMap.get(GasValueBeanDao.class).clone(); + gasValueBeanDaoConfig.initIdentityScope(type); - cameraPointBeanDao = new CameraPointBeanDao(cameraPointBeanDaoConfig, this); + gasValueBeanDao = new GasValueBeanDao(gasValueBeanDaoConfig, this); - registerDao(CameraPointBean.class, cameraPointBeanDao); + registerDao(GasValueBean.class, gasValueBeanDao); } public void clear() { - cameraPointBeanDaoConfig.clearIdentityScope(); + gasValueBeanDaoConfig.clearIdentityScope(); } - public CameraPointBeanDao getCameraPointBeanDao() { - return cameraPointBeanDao; + public GasValueBeanDao getGasValueBeanDao() { + return gasValueBeanDao; } } diff --git a/app/src/main/java/com/casic/endoscope/greendao/GasValueBeanDao.java b/app/src/main/java/com/casic/endoscope/greendao/GasValueBeanDao.java new file mode 100644 index 0000000..5149375 --- /dev/null +++ b/app/src/main/java/com/casic/endoscope/greendao/GasValueBeanDao.java @@ -0,0 +1,149 @@ +package com.casic.endoscope.greendao; + +import android.database.Cursor; +import android.database.sqlite.SQLiteStatement; + +import com.casic.endoscope.bean.GasValueBean; + +import org.greenrobot.greendao.AbstractDao; +import org.greenrobot.greendao.Property; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.database.DatabaseStatement; +import org.greenrobot.greendao.internal.DaoConfig; + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. +/** + * DAO for table "GAS_VALUE_BEAN". +*/ +public class GasValueBeanDao extends AbstractDao { + + public static final String TABLENAME = "GAS_VALUE_BEAN"; + + /** + * Properties of entity GasValueBean.
+ * Can be used for QueryBuilder and for referencing column names. + */ + public static class Properties { + public final static Property Id = new Property(0, Long.class, "id", true, "_id"); + public final static Property Time = new Property(1, String.class, "time", false, "TIME"); + public final static Property Value = new Property(2, int.class, "value", false, "VALUE"); + public final static Property Location = new Property(3, String.class, "location", false, "LOCATION"); + } + + + public GasValueBeanDao(DaoConfig config) { + super(config); + } + + public GasValueBeanDao(DaoConfig config, DaoSession daoSession) { + super(config, daoSession); + } + + /** Creates the underlying database table. */ + public static void createTable(Database db, boolean ifNotExists) { + String constraint = ifNotExists? "IF NOT EXISTS ": ""; + db.execSQL("CREATE TABLE " + constraint + "\"GAS_VALUE_BEAN\" (" + // + "\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id + "\"TIME\" TEXT," + // 1: time + "\"VALUE\" INTEGER NOT NULL ," + // 2: value + "\"LOCATION\" TEXT);"); // 3: location + } + + /** Drops the underlying database table. */ + public static void dropTable(Database db, boolean ifExists) { + String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"GAS_VALUE_BEAN\""; + db.execSQL(sql); + } + + @Override + protected final void bindValues(DatabaseStatement stmt, GasValueBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String time = entity.getTime(); + if (time != null) { + stmt.bindString(2, time); + } + stmt.bindLong(3, entity.getValue()); + + String location = entity.getLocation(); + if (location != null) { + stmt.bindString(4, location); + } + } + + @Override + protected final void bindValues(SQLiteStatement stmt, GasValueBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String time = entity.getTime(); + if (time != null) { + stmt.bindString(2, time); + } + stmt.bindLong(3, entity.getValue()); + + String location = entity.getLocation(); + if (location != null) { + stmt.bindString(4, location); + } + } + + @Override + public Long readKey(Cursor cursor, int offset) { + return cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0); + } + + @Override + public GasValueBean readEntity(Cursor cursor, int offset) { + GasValueBean entity = new GasValueBean( // + cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id + cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // time + cursor.getInt(offset + 2), // value + cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3) // location + ); + return entity; + } + + @Override + public void readEntity(Cursor cursor, GasValueBean entity, int offset) { + entity.setId(cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0)); + entity.setTime(cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1)); + entity.setValue(cursor.getInt(offset + 2)); + entity.setLocation(cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3)); + } + + @Override + protected final Long updateKeyAfterInsert(GasValueBean entity, long rowId) { + entity.setId(rowId); + return rowId; + } + + @Override + public Long getKey(GasValueBean entity) { + if(entity != null) { + return entity.getId(); + } else { + return null; + } + } + + @Override + public boolean hasKey(GasValueBean entity) { + return entity.getId() != null; + } + + @Override + protected final boolean isEntityUpdateable() { + return true; + } + +} diff --git a/app/src/main/java/com/casic/endoscope/utils/DataBaseManager.kt b/app/src/main/java/com/casic/endoscope/utils/DataBaseManager.kt index a593a5b..c683db1 100644 --- a/app/src/main/java/com/casic/endoscope/utils/DataBaseManager.kt +++ b/app/src/main/java/com/casic/endoscope/utils/DataBaseManager.kt @@ -1,8 +1,6 @@ package com.casic.endoscope.utils import com.casic.endoscope.base.BaseApplication -import com.casic.endoscope.bean.CameraPointBean -import com.casic.endoscope.greendao.CameraPointBeanDao class DataBaseManager private constructor() { @@ -13,31 +11,5 @@ } } - private var cameraPointDao = BaseApplication.get().getDaoSession().cameraPointBeanDao - - fun cacheCameraPoint(step: Int, h: Int, v: Int) { - val bean = CameraPointBean() - bean.step = step - bean.hAngle = h - bean.vAngle = v - cameraPointDao.insert(bean) - } - - fun deleteCameraPoints(beans: MutableList) { - beans.forEach { - cameraPointDao.delete(it) - } - } - - fun deleteAllCameraPoint() { - cameraPointDao.deleteAll() - } - - fun queryCameraPointById(id: Long): CameraPointBean { - return cameraPointDao.queryBuilder() - .where(CameraPointBeanDao.Properties.Id.eq(id)) - .unique() - } - - fun loadAllCameraPoint(): MutableList = cameraPointDao.loadAll() + private var gasValueBeanDao = BaseApplication.get().getDaoSession().gasValueBeanDao } \ No newline at end of file diff --git a/app/src/main/java/com/casic/endoscope/utils/EndoscopeDevOpenHelper.kt b/app/src/main/java/com/casic/endoscope/utils/EndoscopeDevOpenHelper.kt index 507b1ff..fd87f0f 100644 --- a/app/src/main/java/com/casic/endoscope/utils/EndoscopeDevOpenHelper.kt +++ b/app/src/main/java/com/casic/endoscope/utils/EndoscopeDevOpenHelper.kt @@ -2,8 +2,8 @@ import android.content.Context import android.database.sqlite.SQLiteDatabase.CursorFactory -import com.casic.endoscope.greendao.CameraPointBeanDao import com.casic.endoscope.greendao.DaoMaster +import com.casic.endoscope.greendao.GasValueBeanDao import com.github.yuweiguocn.library.greendao.MigrationHelper import com.github.yuweiguocn.library.greendao.MigrationHelper.ReCreateAllTableListener import org.greenrobot.greendao.database.Database @@ -22,7 +22,7 @@ DaoMaster.dropAllTables(db, ifExists) } }, - CameraPointBeanDao::class.java + GasValueBeanDao::class.java ) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/endoscope/view/MainActivity.kt b/app/src/main/java/com/casic/endoscope/view/MainActivity.kt index 0fe757e..c4509b0 100644 --- a/app/src/main/java/com/casic/endoscope/view/MainActivity.kt +++ b/app/src/main/java/com/casic/endoscope/view/MainActivity.kt @@ -15,8 +15,6 @@ import android.view.SurfaceHolder import android.view.View import androidx.lifecycle.lifecycleScope -import com.casic.endoscope.adapter.CameraPointAdapter -import com.casic.endoscope.bean.CameraPointBean import com.casic.endoscope.databinding.ActivityMainBinding import com.casic.endoscope.extensions.check import com.casic.endoscope.extensions.convertValue @@ -28,14 +26,12 @@ import com.casic.endoscope.extensions.init import com.casic.endoscope.extensions.toTime import com.casic.endoscope.service.VideoTranscodeService -import com.casic.endoscope.utils.DataBaseManager import com.casic.endoscope.utils.ProjectConstant import com.casic.endoscope.utils.ble.BleDeviceManager import com.casic.endoscope.utils.ble.OnDeviceConnectListener import com.casic.endoscope.utils.ble.OnDeviceDiscoveredListener import com.casic.endoscope.utils.hk.MessageCodeHub import com.casic.endoscope.utils.hk.SDKGuider -import com.casic.endoscope.widgets.AddCameraPointDialog import com.casic.endoscope.widgets.BluetoothDeviceDialog import com.casic.endoscope.widgets.LineChartMarkerView import com.github.mikephil.charting.data.Entry @@ -55,10 +51,8 @@ import com.pengxh.kt.lite.extensions.timestampToTime import com.pengxh.kt.lite.utils.LoadingDialogHub import com.pengxh.kt.lite.utils.WeakReferenceHandler -import com.pengxh.kt.lite.widget.SteeringWheelView import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch -import kotlinx.coroutines.withContext import java.text.SimpleDateFormat import java.util.Date import java.util.Locale @@ -101,17 +95,11 @@ //焦距按钮是否已松开 private var isScaleButtonUp = true - //是否拍照成功 - private var isCaptureSuccess = true - private var timer: Timer? = null private var timerTask: TimerTask? = null private var seconds = 0L - private var dataBeans: MutableList = ArrayList() - private var selectedItems: MutableList = ArrayList() private var inputVideoPath = "" private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var dataAdapter: CameraPointAdapter private lateinit var serviceIntent: Intent private lateinit var dataSet: LineDataSet private lateinit var lineData: LineData @@ -123,8 +111,6 @@ override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) - dataBeans = DataBaseManager.get.loadAllCameraPoint() - //显示数据 weakReferenceHandler.sendEmptyMessage(messageCode) @@ -147,13 +133,7 @@ override fun handleMessage(msg: Message): Boolean { if (msg.what == messageCode) { //绑定数据 - dataAdapter = CameraPointAdapter(this, dataBeans) - binding.recyclerView.adapter = dataAdapter - dataAdapter.setOnItemCheckedListener(object : CameraPointAdapter.OnItemCheckedListener { - override fun onItemChecked(position: Int, items: ArrayList) { - selectedItems = items - } - }) + } return true } @@ -209,6 +189,180 @@ } } + binding.upScaleButton.setOnTouchListener { _, event -> + when (event.action) { + MotionEvent.ACTION_DOWN -> { + if (isPreviewSuccess && isScaleButtonUp) { + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_IN, 0) + isScaleButtonUp = false + } + } + + MotionEvent.ACTION_UP -> { + isScaleButtonUp = true + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_IN, 1) + } + } + false + } + + binding.downScaleButton.setOnTouchListener { _, event -> + when (event.action) { + MotionEvent.ACTION_DOWN -> { + if (isPreviewSuccess && isScaleButtonUp) { + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_OUT, 0) + isScaleButtonUp = false + } + } + + MotionEvent.ACTION_UP -> { + isScaleButtonUp = true + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_OUT, 1) + } + } + false + } + + binding.topButton.setOnTouchListener { _, motionEvent -> + when (motionEvent.action) { + MotionEvent.ACTION_DOWN -> { + if (isPreviewSuccess && isActionUp) { + hkSDK.NET_DVR_PTZControlWithSpeed( + previewHandle, PTZCommand.TILT_UP, 0, selectedSpeed + ) + isActionUp = false + } + } + + MotionEvent.ACTION_UP -> { + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.TILT_UP, 1) + isActionUp = true + } + } + false + } + + binding.centerButton.setOnClickListener { + if (!isPreviewSuccess) { + val deviceItem = SDKGuider.sdkGuider.devManageGuider.DeviceItem() + deviceItem.szDevName = "" + deviceItem.devNetInfo = SDKGuider.sdkGuider.devManageGuider.DevNetInfo( + ProjectConstant.HK_NET_IP, + ProjectConstant.HK_NET_PORT, + ProjectConstant.HK_NET_USERNAME, + ProjectConstant.HK_NET_PASSWORD + ) + if (deviceItem.szDevName.isEmpty()) { + deviceItem.szDevName = deviceItem.devNetInfo.szIp + } + val loginV40Jna = SDKGuider.sdkGuider.devManageGuider.login_v40_jna( + deviceItem.szDevName, deviceItem.devNetInfo + ) + if (loginV40Jna) { + //配置设备通道 + try { + val deviceInfo = SDKGuider.sdkGuider.devManageGuider.devList[0] + returnUserId = deviceInfo.szUserId + + aChannelNum = + deviceInfo.deviceInfoV40_jna.struDeviceV30.byChanNum.toInt() + startAChannel = + deviceInfo.deviceInfoV40_jna.struDeviceV30.byStartChan.toInt() + + dChannelNum = + deviceInfo.deviceInfoV40_jna.struDeviceV30.byIPChanNum + deviceInfo.deviceInfoV40_jna.struDeviceV30.byHighDChanNum * 256 + startDChannel = + deviceInfo.deviceInfoV40_jna.struDeviceV30.byStartChan.toInt() + + var iAnalogStartChan = startAChannel + var iDigitalStartChan = startDChannel + + val channelList = ArrayList() + + for (i in 0 until aChannelNum) { + channelList.add("ACamera_$iAnalogStartChan") + iAnalogStartChan++ + } + + for (i in 0 until dChannelNum) { + channelList.add("DCamera_$iDigitalStartChan") + iDigitalStartChan++ + } + selectChannel = Integer.valueOf(channelList[0].getChannel()) + + val streamList = ArrayList() + streamList.add("main_stream") + streamList.add("sub_stream") + streamList.add("third_stream") + + //开始预览 + if (previewHandle != -1) { + SDKGuider.sdkGuider.devPreviewGuider.RealPlay_Stop_jni(previewHandle) + } + val strutPlayInfo = NET_DVR_PREVIEWINFO() + strutPlayInfo.lChannel = selectChannel + strutPlayInfo.dwStreamType = 1 + strutPlayInfo.bBlocked = 1 + strutPlayInfo.hHwnd = binding.surfaceView.holder + previewHandle = SDKGuider.sdkGuider.devPreviewGuider.RealPlay_V40_jni( + returnUserId, strutPlayInfo, null + ) + if (previewHandle < 0) { + Log.d(kTag, "initEvent: Err:${MessageCodeHub.getErrorCode()}") + return@setOnClickListener + } + isPreviewSuccess = true + "预览开启成功".show(context) + //开始计时 + timer = Timer() + timerTask = object : TimerTask() { + override fun run() { + seconds++ + lifecycleScope.launch(Dispatchers.Main) { + binding.runningTimeView.text = seconds.toTime() + } + } + } + timer?.schedule(timerTask, 0, 1000) + } catch (e: IndexOutOfBoundsException) { + e.printStackTrace() + "设备未正常连接,无法开启预览".show(context) + } + } else { + "设备登陆失败".show(context) + } + } else { + if (!SDKGuider.sdkGuider.devPreviewGuider.RealPlay_Stop_jni(previewHandle)) { + return@setOnClickListener + } + previewHandle = -1 + isPreviewSuccess = false + "预览关闭成功".show(context) + //停止计时 + timerTask?.cancel() + timer?.cancel() + } + } + + binding.bottomButton.setOnTouchListener { _, motionEvent -> + when (motionEvent.action) { + MotionEvent.ACTION_DOWN -> { + if (isPreviewSuccess && isActionUp) { + hkSDK.NET_DVR_PTZControlWithSpeed( + previewHandle, PTZCommand.TILT_DOWN, 0, selectedSpeed + ) + isActionUp = false + } + } + + MotionEvent.ACTION_UP -> { + hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.TILT_DOWN, 1) + isActionUp = true + } + } + false + } + //单张拍照 binding.imageButton.setOnClickListener { if (isPreviewSuccess) { @@ -252,278 +406,8 @@ true } - //连续拍照 - binding.multipleImageButton.setOnClickListener { - if (dataBeans.isEmpty()) { - "请先设置连续拍照步骤".show(this) - return@setOnClickListener - } - if (isPreviewSuccess) { - lifecycleScope.launch(Dispatchers.IO) { - dataBeans.forEach { - //再拍照 - if (isCaptureSuccess) { - isCaptureSuccess = false - - //先执行角度 - executeAngle(it.hAngle, it.vAngle) - - withContext(Dispatchers.Main) { - "抓取步骤${it.step}画面".show(context) - } - - val strJpeg = NET_DVR_JPEGPARA() - strJpeg.wPicQuality = 1 - strJpeg.wPicSize = 2 - - val imagePath = - "/${createImageFileDir()}/${timeFormat.format(Date())}.png" - hkSDK.NET_DVR_CaptureJPEGPicture( - returnUserId, selectChannel, strJpeg, imagePath - ) - - isCaptureSuccess = MessageCodeHub.getErrorCode() == 0 - } - } - withContext(Dispatchers.Main) { - "连续抓取画面完成".show(context) - } - } - } else { - "摄像头预览未打开,无法拍照".show(this) - } - } - - binding.addButton.setOnClickListener { - val step = if (dataBeans.isEmpty()) { - 0 - } else { - dataBeans.last().step - } - AddCameraPointDialog.Builder().setContext(this).setLastStep(step) - .setNegativeButton("取消").setPositiveButton("添加") - .setOnDialogButtonClickListener(object : - AddCameraPointDialog.OnDialogButtonClickListener { - override fun onConfirmClick(step: Int, hAngle: Int, vAngle: Int) { - DataBaseManager.get.cacheCameraPoint(step, hAngle, vAngle) - dataBeans = DataBaseManager.get.loadAllCameraPoint() - dataAdapter.setRefreshData(dataBeans) - } - - override fun onCancelClick() { - - } - }).build().show() - } - - binding.deleteButton.setOnClickListener { - if (selectedItems.isEmpty()) { - "请先选择要删除的步骤".show(this) - return@setOnClickListener - } - DataBaseManager.get.deleteCameraPoints(selectedItems) - dataBeans = DataBaseManager.get.loadAllCameraPoint() - dataAdapter.setRefreshData(dataBeans) - selectedItems.clear() - } - - binding.steeringWheelView.setOnWheelTouchListener(object : - SteeringWheelView.OnWheelTouchListener { - override fun onCenterClicked() { - if (!isPreviewSuccess) { - val deviceItem = SDKGuider.sdkGuider.devManageGuider.DeviceItem() - deviceItem.szDevName = "" - deviceItem.devNetInfo = SDKGuider.sdkGuider.devManageGuider.DevNetInfo( - ProjectConstant.HK_NET_IP, - ProjectConstant.HK_NET_PORT, - ProjectConstant.HK_NET_USERNAME, - ProjectConstant.HK_NET_PASSWORD - ) - if (deviceItem.szDevName.isEmpty()) { - deviceItem.szDevName = deviceItem.devNetInfo.szIp - } - val loginV40Jna = SDKGuider.sdkGuider.devManageGuider.login_v40_jna( - deviceItem.szDevName, deviceItem.devNetInfo - ) - if (loginV40Jna) { - //配置设备通道 - try { - val deviceInfo = SDKGuider.sdkGuider.devManageGuider.devList[0] - returnUserId = deviceInfo.szUserId - - aChannelNum = - deviceInfo.deviceInfoV40_jna.struDeviceV30.byChanNum.toInt() - startAChannel = - deviceInfo.deviceInfoV40_jna.struDeviceV30.byStartChan.toInt() - - dChannelNum = - deviceInfo.deviceInfoV40_jna.struDeviceV30.byIPChanNum + deviceInfo.deviceInfoV40_jna.struDeviceV30.byHighDChanNum * 256 - startDChannel = - deviceInfo.deviceInfoV40_jna.struDeviceV30.byStartChan.toInt() - - var iAnalogStartChan = startAChannel - var iDigitalStartChan = startDChannel - - val channelList = ArrayList() - - for (i in 0 until aChannelNum) { - channelList.add("ACamera_$iAnalogStartChan") - iAnalogStartChan++ - } - - for (i in 0 until dChannelNum) { - channelList.add("DCamera_$iDigitalStartChan") - iDigitalStartChan++ - } - selectChannel = Integer.valueOf(channelList[0].getChannel()) - - val streamList = ArrayList() - streamList.add("main_stream") - streamList.add("sub_stream") - streamList.add("third_stream") - - //开始预览 - if (previewHandle != -1) { - SDKGuider.sdkGuider.devPreviewGuider.RealPlay_Stop_jni(previewHandle) - } - val strutPlayInfo = NET_DVR_PREVIEWINFO() - strutPlayInfo.lChannel = selectChannel - strutPlayInfo.dwStreamType = 1 - strutPlayInfo.bBlocked = 1 - strutPlayInfo.hHwnd = binding.surfaceView.holder - previewHandle = SDKGuider.sdkGuider.devPreviewGuider.RealPlay_V40_jni( - returnUserId, strutPlayInfo, null - ) - if (previewHandle < 0) { - Log.d(kTag, "initEvent: Err:${MessageCodeHub.getErrorCode()}") - return - } - isPreviewSuccess = true - "预览开启成功".show(context) - //开始计时 - timer = Timer() - timerTask = object : TimerTask() { - override fun run() { - seconds++ - lifecycleScope.launch(Dispatchers.Main) { - binding.runningTimeView.text = seconds.toTime() - } - } - } - timer?.schedule(timerTask, 0, 1000) - } catch (e: IndexOutOfBoundsException) { - e.printStackTrace() - "设备未正常连接,无法开启预览".show(context) - } - } else { - "设备登陆失败".show(context) - } - } else { - if (!SDKGuider.sdkGuider.devPreviewGuider.RealPlay_Stop_jni(previewHandle)) { - return - } - previewHandle = -1 - isPreviewSuccess = false - "预览关闭成功".show(context) - //停止计时 - timerTask?.cancel() - timer?.cancel() - } - } - - override fun onLeftTurn() { - if (isPreviewSuccess && isActionUp) { - hkSDK.NET_DVR_PTZControlWithSpeed( - previewHandle, PTZCommand.PAN_LEFT, 0, selectedSpeed - ) - isActionUp = false - } - } - - override fun onTopTurn() { - if (isPreviewSuccess && isActionUp) { - hkSDK.NET_DVR_PTZControlWithSpeed( - previewHandle, PTZCommand.TILT_UP, 0, selectedSpeed - ) - isActionUp = false - } - } - - override fun onRightTurn() { - if (isPreviewSuccess && isActionUp) { - hkSDK.NET_DVR_PTZControlWithSpeed( - previewHandle, PTZCommand.PAN_RIGHT, 0, selectedSpeed - ) - isActionUp = false - } - } - - override fun onBottomTurn() { - if (isPreviewSuccess && isActionUp) { - hkSDK.NET_DVR_PTZControlWithSpeed( - previewHandle, PTZCommand.TILT_DOWN, 0, selectedSpeed - ) - isActionUp = false - } - } - - override fun onActionTurnUp(dir: SteeringWheelView.Direction) { - when (dir) { - SteeringWheelView.Direction.LEFT -> { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.PAN_LEFT, 1) - isActionUp = true - } - - SteeringWheelView.Direction.TOP -> { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.TILT_UP, 1) - isActionUp = true - } - - SteeringWheelView.Direction.RIGHT -> { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.PAN_RIGHT, 1) - isActionUp = true - } - - SteeringWheelView.Direction.BOTTOM -> { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.TILT_DOWN, 1) - isActionUp = true - } - } - } - }) - - binding.upScaleButton.setOnTouchListener { _, event -> - when (event.action) { - MotionEvent.ACTION_DOWN -> { - if (isPreviewSuccess && isScaleButtonUp) { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_IN, 0) - isScaleButtonUp = false - } - } - - MotionEvent.ACTION_UP -> { - isScaleButtonUp = true - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_IN, 1) - } - } - false - } - - binding.downScaleButton.setOnTouchListener { _, event -> - when (event.action) { - MotionEvent.ACTION_DOWN -> { - if (isPreviewSuccess && isScaleButtonUp) { - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_OUT, 0) - isScaleButtonUp = false - } - } - - MotionEvent.ACTION_UP -> { - isScaleButtonUp = true - hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_OUT, 1) - } - } - false + binding.resetButton.setOnClickListener { + executeAngle(0, 0) } } diff --git a/app/src/main/res/drawable/bg_solid_layout_blue_10.xml b/app/src/main/res/drawable/bg_solid_layout_blue_10.xml new file mode 100644 index 0000000..b7e06e3 --- /dev/null +++ b/app/src/main/res/drawable/bg_solid_layout_blue_10.xml @@ -0,0 +1,7 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_stroke_layout_blue_10.xml b/app/src/main/res/drawable/bg_stroke_layout_blue_10.xml deleted file mode 100644 index d6f55c9..0000000 --- a/app/src/main/res/drawable/bg_stroke_layout_blue_10.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_camera.xml b/app/src/main/res/drawable/ic_camera.xml new file mode 100644 index 0000000..1f7ab22 --- /dev/null +++ b/app/src/main/res/drawable/ic_camera.xml @@ -0,0 +1,15 @@ + + + + + diff --git a/app/src/main/res/drawable/ic_dir_down.xml b/app/src/main/res/drawable/ic_dir_down.xml deleted file mode 100644 index e6807dc..0000000 --- a/app/src/main/res/drawable/ic_dir_down.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_dir_left.xml b/app/src/main/res/drawable/ic_dir_left.xml deleted file mode 100644 index 12b2237..0000000 --- a/app/src/main/res/drawable/ic_dir_left.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_dir_right.xml b/app/src/main/res/drawable/ic_dir_right.xml deleted file mode 100644 index 96539aa..0000000 --- a/app/src/main/res/drawable/ic_dir_right.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_dir_up.xml b/app/src/main/res/drawable/ic_dir_up.xml deleted file mode 100644 index e7a153e..0000000 --- a/app/src/main/res/drawable/ic_dir_up.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_down.xml b/app/src/main/res/drawable/ic_down.xml new file mode 100644 index 0000000..9fcd974 --- /dev/null +++ b/app/src/main/res/drawable/ic_down.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_minus.xml b/app/src/main/res/drawable/ic_minus.xml index a399f5f..2942b80 100644 --- a/app/src/main/res/drawable/ic_minus.xml +++ b/app/src/main/res/drawable/ic_minus.xml @@ -1,9 +1,9 @@ + android:fillColor="#1875F0" + android:pathData="M864,480H160c-17.6,0 -32,14.4 -32,32s14.4,32 32,32h704c17.6,0 32,-14.4 32,-32s-14.4,-32 -32,-32z" /> diff --git a/app/src/main/res/drawable/ic_off.xml b/app/src/main/res/drawable/ic_off.xml new file mode 100644 index 0000000..1940f16 --- /dev/null +++ b/app/src/main/res/drawable/ic_off.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/ic_picture.xml b/app/src/main/res/drawable/ic_picture.xml new file mode 100644 index 0000000..a781b4c --- /dev/null +++ b/app/src/main/res/drawable/ic_picture.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/ic_plus.xml b/app/src/main/res/drawable/ic_plus.xml index 49d9fb0..db4941d 100644 --- a/app/src/main/res/drawable/ic_plus.xml +++ b/app/src/main/res/drawable/ic_plus.xml @@ -1,9 +1,9 @@ + android:fillColor="#1875F0" + android:pathData="M864,480H544V160c0,-17.6 -14.4,-32 -32,-32s-32,14.4 -32,32v320H160c-17.6,0 -32,14.4 -32,32s14.4,32 32,32h320v320c0,17.6 14.4,32 32,32s32,-14.4 32,-32V544h320c17.6,0 32,-14.4 32,-32s-14.4,-32 -32,-32z" /> diff --git a/app/src/main/res/drawable/ic_reset.xml b/app/src/main/res/drawable/ic_reset.xml new file mode 100644 index 0000000..969dccd --- /dev/null +++ b/app/src/main/res/drawable/ic_reset.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_up.xml b/app/src/main/res/drawable/ic_up.xml new file mode 100644 index 0000000..3f4bca9 --- /dev/null +++ b/app/src/main/res/drawable/ic_up.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/selector_scale_button.xml b/app/src/main/res/drawable/selector_scale_button.xml index 7273700..4efba9d 100644 --- a/app/src/main/res/drawable/selector_scale_button.xml +++ b/app/src/main/res/drawable/selector_scale_button.xml @@ -2,7 +2,7 @@ - + diff --git a/app/src/main/res/layout/activity_big_image.xml b/app/src/main/res/layout/activity_big_image.xml index 228c2c4..b0b948c 100644 --- a/app/src/main/res/layout/activity_big_image.xml +++ b/app/src/main/res/layout/activity_big_image.xml @@ -26,7 +26,7 @@ android:layout_height="wrap_content" android:layout_centerVertical="true" android:layout_marginStart="@dimen/lib_dp_10" - android:src="@drawable/ic_left_white" /> + android:src="@drawable/ic_title_left" /> @@ -45,7 +44,8 @@ android:id="@+id/searchBleButton" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_marginEnd="@dimen/dp_3" + android:layout_margin="@dimen/dp_7" + android:background="@drawable/selector_scale_button" android:text="搜索蓝牙" />
@@ -70,119 +70,13 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -192,6 +86,28 @@ android:layout_height="match_parent" /> + + + + + + + - - - - - - - - + android:text="(长按照片可操作)" + android:textColor="@color/hintColor" /> + + app:layoutManager="androidx.recyclerview.widget.GridLayoutManager" + app:spanCount="2" />
@@ -288,106 +188,136 @@ android:layout_height="match_parent" android:background="@color/backgroundColor" android:gravity="center_horizontal" - android:orientation="horizontal" - android:paddingVertical="@dimen/dp_10"> + android:orientation="vertical"> + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginHorizontal="@dimen/dp_10" + android:layout_marginVertical="@dimen/dp_5" + android:orientation="horizontal"> - - - - - - - - - - - - - - - - + + android:orientation="horizontal"> - - - + android:layout_marginVertical="@dimen/dp_10" + android:layout_marginStart="@dimen/dp_10" + android:layout_marginEnd="@dimen/dp_20" + android:layout_weight="1" + android:background="@drawable/bg_solid_layout_blue_10"> + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/app/src/main/res/layout/item_point_list_rv.xml b/app/src/main/res/layout/item_point_list_rv.xml deleted file mode 100644 index 8ac01a8..0000000 --- a/app/src/main/res/layout/item_point_list_rv.xml +++ /dev/null @@ -1,45 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/gradlew b/gradlew old mode 100755 new mode 100644