Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
A
avmIntergration
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
马乐
avmIntergration
Commits
bde90caf
Commit
bde90caf
authored
Oct 19, 2023
by
马乐
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
调整图片大小
parent
41e46616
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
144 additions
and
68 deletions
+144
-68
MainActivity.kt
app/src/main/java/com/intergration/avm/MainActivity.kt
+109
-32
avm.kt
app/src/main/java/com/intergration/avm/avm.kt
+27
-25
MyGLRenderer.kt
.../main/java/com/intergration/avm/glsurface/MyGLRenderer.kt
+1
-2
MyGLSurfaceView.kt
...in/java/com/intergration/avm/glsurface/MyGLSurfaceView.kt
+1
-1
AuxiliaryScreenPresentation.kt
...ergration/avm/presentation/AuxiliaryScreenPresentation.kt
+2
-4
Utils.kt
app/src/main/java/com/intergration/avm/utils/Utils.kt
+3
-3
layout_presentation.xml
app/src/main/res/layout/layout_presentation.xml
+1
-1
No files found.
app/src/main/java/com/intergration/avm/MainActivity.kt
View file @
bde90caf
...
@@ -15,6 +15,9 @@ import androidx.core.content.ContextCompat
...
@@ -15,6 +15,9 @@ import androidx.core.content.ContextCompat
import
com.arcsoft.visdrive.avmsdk.ArcErrorInfo
import
com.arcsoft.visdrive.avmsdk.ArcErrorInfo
import
com.arcsoft.visdrive.avmsdk.ArcVisDriveAVMEngine
import
com.arcsoft.visdrive.avmsdk.ArcVisDriveAVMEngine
import
com.arcsoft.visdrive.avmsdk.constant.avm.ArcAVMType
import
com.arcsoft.visdrive.avmsdk.constant.avm.ArcAVMType
import
com.arcsoft.visdrive.avmsdk.model.avm.ArcAVMCalibInfo
import
com.arcsoft.visdrive.avmsdk.model.avm.ArcAVMCalibResult
import
com.arcsoft.visdrive.avmsdk.model.avm.ArcAVMLookupTable
import
com.arcsoft.visdrive.avmsdk.model.avm.ArcAVMOutputImage
import
com.arcsoft.visdrive.avmsdk.model.avm.ArcAVMOutputImage
import
com.arcsoft.visdrive.avmsdk.model.common.ArcActiveEnvParam
import
com.arcsoft.visdrive.avmsdk.model.common.ArcActiveEnvParam
import
com.blankj.utilcode.util.FileUtils
import
com.blankj.utilcode.util.FileUtils
...
@@ -37,9 +40,9 @@ import kotlinx.coroutines.CoroutineScope
...
@@ -37,9 +40,9 @@ import kotlinx.coroutines.CoroutineScope
import
kotlinx.coroutines.Dispatchers
import
kotlinx.coroutines.Dispatchers
import
kotlinx.coroutines.Job
import
kotlinx.coroutines.Job
import
kotlinx.coroutines.MainScope
import
kotlinx.coroutines.MainScope
import
kotlinx.coroutines.cancel
import
kotlinx.coroutines.channels.Channel
import
kotlinx.coroutines.channels.Channel
import
kotlinx.coroutines.delay
import
kotlinx.coroutines.delay
import
kotlinx.coroutines.ensureActive
import
kotlinx.coroutines.launch
import
kotlinx.coroutines.launch
import
kotlinx.coroutines.withContext
import
kotlinx.coroutines.withContext
import
java.io.File
import
java.io.File
...
@@ -70,8 +73,12 @@ class MainActivity : AppCompatActivity() {
...
@@ -70,8 +73,12 @@ class MainActivity : AppCompatActivity() {
private
var
job
:
Job
?
=
null
private
var
job
:
Job
?
=
null
private
var
avmPlayJob
:
Job
?
=
null
private
var
avmStartScope
:
AvmCoroutineScope
?=
null
private
var
avmStartScope
:
AvmCoroutineScope
?=
null
private
val
channel
=
Channel
<
Boolean
>()
override
fun
onCreate
(
savedInstanceState
:
Bundle
?)
{
override
fun
onCreate
(
savedInstanceState
:
Bundle
?)
{
super
.
onCreate
(
savedInstanceState
)
super
.
onCreate
(
savedInstanceState
)
binding
=
ActivityMainBinding
.
inflate
(
layoutInflater
)
binding
=
ActivityMainBinding
.
inflate
(
layoutInflater
)
...
@@ -98,7 +105,7 @@ class MainActivity : AppCompatActivity() {
...
@@ -98,7 +105,7 @@ class MainActivity : AppCompatActivity() {
}
}
binding
.
activeAvm
.
setOnClickListener
{
binding
.
activeAvm
.
setOnClickListener
{
avmCoroutineScope
.
launch
{
avmCoroutineScope
.
launch
{
va
l
result
=
ArcVisDriveAVMEngine
.
activate
(
va
r
result
=
ArcVisDriveAVMEngine
.
activate
(
APP_ID
,
APP_SECRET
,
ArcAVMType
.
AVM_CAM_4
,
APP_ID
,
APP_SECRET
,
ArcAVMType
.
AVM_CAM_4
,
ArcActiveEnvParam
().
apply
{
ArcActiveEnvParam
().
apply
{
this
.
IMEI
=
"d5e2f07694f674c4"
this
.
IMEI
=
"d5e2f07694f674c4"
...
@@ -110,7 +117,14 @@ class MainActivity : AppCompatActivity() {
...
@@ -110,7 +117,14 @@ class MainActivity : AppCompatActivity() {
Toast
.
makeText
(
this
@MainActivity
,
"激活成功"
,
Toast
.
LENGTH_SHORT
).
show
()
Toast
.
makeText
(
this
@MainActivity
,
"激活成功"
,
Toast
.
LENGTH_SHORT
).
show
()
}
}
spUtils
.
put
(
IS_ACTIVATED
,
true
)
spUtils
.
put
(
IS_ACTIVATED
,
true
)
coroutineContext
[
AvmCoroutineContext
]
?.
engine
?.
initializeAvmParams
(
calibResultPath
,
lookupPath
)
result
=
coroutineContext
[
AvmCoroutineContext
]
?.
engine
?.
initializeAvmParams
(
calibResultPath
,
lookupPath
)
?:
ArcErrorInfo
.
ARC_ERROR_BAD_STATE
if
(
result
==
ArcErrorInfo
.
ARC_ERROR_OK
)
{
val
getCalibInfo
=
ArcAVMCalibInfo
()
val
getCalibResult
=
ArcAVMCalibResult
()
val
getLookupTable
=
ArcAVMLookupTable
()
result
=
avmEngine
.
getCalibrateResults
(
getCalibInfo
,
getCalibResult
,
getLookupTable
)
LogUtils
.
i
(
"getCalibrateResults:${result}, calibInfo:${getCalibInfo}, result:${getCalibResult.data.size}, lookup:${getLookupTable.data.size}"
)
}
}
else
{
}
else
{
LogUtils
.
e
(
"激活失败!"
)
LogUtils
.
e
(
"激活失败!"
)
withContext
(
Dispatchers
.
Main
){
withContext
(
Dispatchers
.
Main
){
...
@@ -122,7 +136,67 @@ class MainActivity : AppCompatActivity() {
...
@@ -122,7 +136,67 @@ class MainActivity : AppCompatActivity() {
}
}
binding
.
autoCalib
.
setOnClickListener
{
binding
.
autoCalib
.
setOnClickListener
{
avmCoroutineScope
.
launch
{
avmCoroutineScope
.
launch
{
coroutineContext
[
AvmCoroutineContext
]
?.
engine
?.
autoCalib
(
calibResultPath
,
lookupPath
)
launch
(
Dispatchers
.
Default
)
{
avmFrontCamera
.
startPictureSequence
(
PictureSequenceSource
.
GENERAL_CAMERA
,
configCameraSequence
(
avmDir
.
absolutePath
){
_
,
_
,
status
,
data
,
_
->
if
(
status
==
SpmCameraDevice
.
ImageDataCallback
.
IMAGE_STATUS_SUCCEEDED
)
{
ArcAVMInputImageFactory
.
ofFront
(
data
).
also
{
avmInputImages
[
0
]
=
it
}
}
}
)
}
launch
(
Dispatchers
.
Default
)
{
avmRightCamera
.
startPictureSequence
(
PictureSequenceSource
.
GENERAL_CAMERA
,
configCameraSequence
(
avmDir
.
absolutePath
){
_
,
_
,
status
,
data
,
_
->
if
(
status
==
SpmCameraDevice
.
ImageDataCallback
.
IMAGE_STATUS_SUCCEEDED
)
{
ArcAVMInputImageFactory
.
ofRight
(
data
).
also
{
avmInputImages
[
1
]
=
it
}
}
}
)
}
launch
(
Dispatchers
.
Default
)
{
avmBackCamera
.
startPictureSequence
(
PictureSequenceSource
.
GENERAL_CAMERA
,
configCameraSequence
(
avmDir
.
absolutePath
){
_
,
_
,
status
,
data
,
_
->
if
(
status
==
SpmCameraDevice
.
ImageDataCallback
.
IMAGE_STATUS_SUCCEEDED
)
{
ArcAVMInputImageFactory
.
ofBack
(
data
).
also
{
avmInputImages
[
2
]
=
it
}
}
}
)
}
launch
(
Dispatchers
.
Default
)
{
avmLeftCamera
.
startPictureSequence
(
PictureSequenceSource
.
GENERAL_CAMERA
,
configCameraSequence
(
avmDir
.
absolutePath
){
_
,
_
,
status
,
data
,
_
->
if
(
status
==
SpmCameraDevice
.
ImageDataCallback
.
IMAGE_STATUS_SUCCEEDED
)
{
ArcAVMInputImageFactory
.
ofLeft
(
data
).
also
{
avmInputImages
[
3
]
=
it
}
}
}
)
}
while
(
avmInputImages
.
filterNotNull
().
size
!=
4
)
{
LogUtils
.
d
(
"input list size:${avmInputImages.filterNotNull()}"
)
delay
(
100
)
}
val
result
=
coroutineContext
[
AvmCoroutineContext
]
?.
engine
?.
autoCalib
(
calibResultPath
,
lookupPath
)
if
(
result
!=
null
)
{
launch
(
Dispatchers
.
IO
){
avmLeftCamera
.
stopPictureSequence
(
PictureSequenceSource
.
GENERAL_CAMERA
)
avmFrontCamera
.
stopPictureSequence
(
PictureSequenceSource
.
GENERAL_CAMERA
)
avmRightCamera
.
stopPictureSequence
(
PictureSequenceSource
.
GENERAL_CAMERA
)
avmBackCamera
.
stopPictureSequence
(
PictureSequenceSource
.
GENERAL_CAMERA
)
}
}
}
}
}
}
...
@@ -136,76 +210,76 @@ class MainActivity : AppCompatActivity() {
...
@@ -136,76 +210,76 @@ class MainActivity : AppCompatActivity() {
if
(
avmStartScope
==
null
)
{
if
(
avmStartScope
==
null
)
{
avmStartScope
=
AvmCoroutineScope
(
AvmCoroutineContext
(
engine
=
avmEngine
)
+
Dispatchers
.
IO
+
COROUTINE_AVM
+
Job
())
avmStartScope
=
AvmCoroutineScope
(
AvmCoroutineContext
(
engine
=
avmEngine
)
+
Dispatchers
.
IO
+
COROUTINE_AVM
+
Job
())
}
}
val
channel
=
Channel
<
Boolean
>()
avmPlayJob
=
avmStartScope
?.
launch
{
avmStartScope
?.
launch
{
try
{
launch
(
Dispatchers
.
Default
)
{
val
frontScope
=
CoroutineScope
(
Dispatchers
.
Default
)
avmFrontCamera
.
startPictureSequence
(
avmFrontCamera
.
startPictureSequence
(
PictureSequenceSource
.
GENERAL_CAMERA
,
PictureSequenceSource
.
GENERAL_CAMERA
,
configCameraSequence
(
avmDir
.
absolutePath
){
_
,
_
,
status
,
data
,
_
->
configCameraSequence
(
avmDir
.
absolutePath
)
{
_
,
_
,
status
,
data
,
_
->
if
(
status
==
SpmCameraDevice
.
ImageDataCallback
.
IMAGE_STATUS_SUCCEEDED
)
{
if
(
status
==
SpmCameraDevice
.
ImageDataCallback
.
IMAGE_STATUS_SUCCEEDED
)
{
ArcAVMInputImageFactory
.
ofFront
(
data
).
also
{
ArcAVMInputImageFactory
.
ofFront
(
data
).
also
{
avmInputImages
[
0
]
=
it
avmInputImages
[
0
]
=
it
launch
{
frontScope
.
launch
{
ensureActive
()
channel
.
send
(
true
)
channel
.
send
(
true
)
}
}
}
}
}
}
}
}
)
)
}
val
rightScope
=
CoroutineScope
(
Dispatchers
.
Default
)
launch
(
Dispatchers
.
Default
)
{
avmRightCamera
.
startPictureSequence
(
avmRightCamera
.
startPictureSequence
(
PictureSequenceSource
.
GENERAL_CAMERA
,
PictureSequenceSource
.
GENERAL_CAMERA
,
configCameraSequence
(
avmDir
.
absolutePath
){
_
,
_
,
status
,
data
,
_
->
configCameraSequence
(
avmDir
.
absolutePath
)
{
_
,
_
,
status
,
data
,
_
->
if
(
status
==
SpmCameraDevice
.
ImageDataCallback
.
IMAGE_STATUS_SUCCEEDED
)
{
if
(
status
==
SpmCameraDevice
.
ImageDataCallback
.
IMAGE_STATUS_SUCCEEDED
)
{
ArcAVMInputImageFactory
.
ofRight
(
data
).
also
{
ArcAVMInputImageFactory
.
ofRight
(
data
).
also
{
avmInputImages
[
1
]
=
it
avmInputImages
[
1
]
=
it
launch
{
rightScope
.
launch
{
ensureActive
()
channel
.
send
(
true
)
channel
.
send
(
true
)
}
}
}
}
}
}
}
}
)
)
}
val
backScope
=
CoroutineScope
(
Dispatchers
.
Default
)
launch
(
Dispatchers
.
Default
)
{
avmBackCamera
.
startPictureSequence
(
avmBackCamera
.
startPictureSequence
(
PictureSequenceSource
.
GENERAL_CAMERA
,
PictureSequenceSource
.
GENERAL_CAMERA
,
configCameraSequence
(
avmDir
.
absolutePath
){
_
,
_
,
status
,
data
,
_
->
configCameraSequence
(
avmDir
.
absolutePath
)
{
_
,
_
,
status
,
data
,
_
->
if
(
status
==
SpmCameraDevice
.
ImageDataCallback
.
IMAGE_STATUS_SUCCEEDED
)
{
if
(
status
==
SpmCameraDevice
.
ImageDataCallback
.
IMAGE_STATUS_SUCCEEDED
)
{
ArcAVMInputImageFactory
.
ofBack
(
data
).
also
{
ArcAVMInputImageFactory
.
ofBack
(
data
).
also
{
avmInputImages
[
2
]
=
it
avmInputImages
[
2
]
=
it
launch
{
backScope
.
launch
{
ensureActive
()
channel
.
send
(
true
)
channel
.
send
(
true
)
}
}
}
}
}
}
}
}
)
)
}
val
leftScope
=
CoroutineScope
(
Dispatchers
.
Default
)
launch
(
Dispatchers
.
Default
)
{
avmLeftCamera
.
startPictureSequence
(
avmLeftCamera
.
startPictureSequence
(
PictureSequenceSource
.
GENERAL_CAMERA
,
PictureSequenceSource
.
GENERAL_CAMERA
,
configCameraSequence
(
avmDir
.
absolutePath
){
_
,
_
,
status
,
data
,
_
->
configCameraSequence
(
avmDir
.
absolutePath
)
{
_
,
_
,
status
,
data
,
_
->
if
(
status
==
SpmCameraDevice
.
ImageDataCallback
.
IMAGE_STATUS_SUCCEEDED
)
{
if
(
status
==
SpmCameraDevice
.
ImageDataCallback
.
IMAGE_STATUS_SUCCEEDED
)
{
ArcAVMInputImageFactory
.
ofLeft
(
data
).
also
{
ArcAVMInputImageFactory
.
ofLeft
(
data
).
also
{
avmInputImages
[
3
]
=
it
avmInputImages
[
3
]
=
it
launch
{
leftScope
.
launch
{
ensureActive
()
channel
.
send
(
true
)
channel
.
send
(
true
)
}
}
}
}
}
}
}
}
)
)
}
val
outputImageList
=
arrayListOf
<
ArcAVMOutputImage
>()
val
outputImageList
=
arrayListOf
<
ArcAVMOutputImage
>()
while
(
avmInputImages
.
size
!=
4
)
{
while
(
avmInputImages
.
filterNotNull
()
.
size
!=
4
)
{
delay
(
100
)
delay
(
100
)
}
}
LogUtils
.
d
(
"准备播放融合图..."
)
LogUtils
.
d
(
"准备播放融合图..."
)
if
(
spUtils
.
getBoolean
(
CALIB_RESULT
)
&&
spUtils
.
getBoolean
(
LOOKUP_TABLE
))
{
if
(
spUtils
.
getBoolean
(
CALIB_RESULT
)
&&
spUtils
.
getBoolean
(
LOOKUP_TABLE
))
{
launch
(
Dispatchers
.
Default
)
{
while
(
channel
.
receive
())
{
while
(
channel
.
receive
())
{
ensureActive
()
val
result
=
coroutineContext
[
AvmCoroutineContext
]
?.
engine
?.
drawAVM
(
val
result
=
coroutineContext
[
AvmCoroutineContext
]
?.
engine
?.
drawAVM
(
31
,
31
,
avmInputImages
,
avmInputImages
,
...
@@ -217,22 +291,25 @@ class MainActivity : AppCompatActivity() {
...
@@ -217,22 +291,25 @@ class MainActivity : AppCompatActivity() {
}
}
}
}
}
}
}
}
else
{
}
else
{
withContext
(
Dispatchers
.
Main
){
withContext
(
Dispatchers
.
Main
)
{
Toast
.
makeText
(
this
@MainActivity
,
"请先进行标定"
,
Toast
.
LENGTH_SHORT
).
show
()
Toast
.
makeText
(
this
@MainActivity
,
"请先进行标定"
,
Toast
.
LENGTH_SHORT
)
}
.
show
()
}
}
}
}
}
binding
.
stopAvm
.
setOnClickListener
{
}
catch
(
e
:
CancellationException
)
{
avmStartScope
?.
launch
{
LogUtils
.
e
(
"${e.message}"
)
avmLeftCamera
.
stopPictureSequence
(
PictureSequenceSource
.
GENERAL_CAMERA
)
avmLeftCamera
.
stopPictureSequence
(
PictureSequenceSource
.
GENERAL_CAMERA
)
avmFrontCamera
.
stopPictureSequence
(
PictureSequenceSource
.
GENERAL_CAMERA
)
avmFrontCamera
.
stopPictureSequence
(
PictureSequenceSource
.
GENERAL_CAMERA
)
avmRightCamera
.
stopPictureSequence
(
PictureSequenceSource
.
GENERAL_CAMERA
)
avmRightCamera
.
stopPictureSequence
(
PictureSequenceSource
.
GENERAL_CAMERA
)
avmBackCamera
.
stopPictureSequence
(
PictureSequenceSource
.
GENERAL_CAMERA
)
avmBackCamera
.
stopPictureSequence
(
PictureSequenceSource
.
GENERAL_CAMERA
)
cancel
(
kotlinx
.
coroutines
.
CancellationException
(
"Click Stop Avm Button"
))
}
catch
(
e
:
Throwable
)
{
e
.
printStackTrace
()
}
}
}
}
binding
.
stopAvm
.
setOnClickListener
{
avmPlayJob
?.
cancel
(
CancellationException
(
"结束AVM实时渲染"
))
closeAuxiliaryPresentation
()
closeAuxiliaryPresentation
()
}
}
}
}
...
...
app/src/main/java/com/intergration/avm/avm.kt
View file @
bde90caf
...
@@ -99,19 +99,19 @@ fun ArcVisDriveAVMEngine.initializeAvmParams(calibResultPath:File,lookupPath:Fil
...
@@ -99,19 +99,19 @@ fun ArcVisDriveAVMEngine.initializeAvmParams(calibResultPath:File,lookupPath:Fil
avmInitInfo
.
avmIntrinsicParamArray
=
intrinsicArray
avmInitInfo
.
avmIntrinsicParamArray
=
intrinsicArray
val
calibInfo
=
ArcAVMCalibInfo
()
val
calibInfo
=
ArcAVMCalibInfo
()
calibInfo
.
avm2DImageWidth
=
IMAGE_
WIDTH
calibInfo
.
avm2DImageWidth
=
IMAGE_
HEIGHT
calibInfo
.
avm2DImageHeight
=
IMAGE_
HEIGHT
calibInfo
.
avm2DImageHeight
=
IMAGE_
WIDTH
calibInfo
.
singleImageWidth
=
480
calibInfo
.
singleImageWidth
=
IMAGE_WIDTH
calibInfo
.
singleImageHeight
=
456
calibInfo
.
singleImageHeight
=
IMAGE_HEIGHT
val
carInfo
=
ArcAVMCarInfo
()
val
carInfo
=
ArcAVMCarInfo
()
carInfo
.
width
=
250
0
carInfo
.
width
=
59
0
carInfo
.
length
=
60
00
carInfo
.
length
=
18
00
carInfo
.
blinkAreaFront
=
0
carInfo
.
blinkAreaFront
=
0
carInfo
.
blinkAreaRight
=
0
carInfo
.
blinkAreaRight
=
0
carInfo
.
blinkAreaBack
=
0
carInfo
.
blinkAreaBack
=
0
carInfo
.
blinkAreaLeft
=
0
carInfo
.
blinkAreaLeft
=
0
calibInfo
.
avmCarInfo
=
carInfo
calibInfo
.
avmCarInfo
=
carInfo
calibInfo
.
viewPortType
=
ArcAVMViewPortType
.
LARGE
.
value
calibInfo
.
viewPortType
=
ArcAVMViewPortType
.
SMALL
.
value
avmInitInfo
.
avmCalibInfo
=
calibInfo
avmInitInfo
.
avmCalibInfo
=
calibInfo
if
(
spUtils
.
getBoolean
(
CALIB_RESULT
))
{
if
(
spUtils
.
getBoolean
(
CALIB_RESULT
))
{
val
avmCalibResult
=
ArcAVMCalibResult
()
val
avmCalibResult
=
ArcAVMCalibResult
()
...
@@ -130,13 +130,13 @@ fun ArcVisDriveAVMEngine.initializeAvmParams(calibResultPath:File,lookupPath:Fil
...
@@ -130,13 +130,13 @@ fun ArcVisDriveAVMEngine.initializeAvmParams(calibResultPath:File,lookupPath:Fil
return
init
(
avmInitInfo
)
return
init
(
avmInitInfo
)
}
}
fun
ArcVisDriveAVMEngine
.
autoCalib
(
calibResultPath
:
File
,
lookupPath
:
File
){
fun
ArcVisDriveAVMEngine
.
autoCalib
(
calibResultPath
:
File
,
lookupPath
:
File
)
:
Int
{
val
clothInfo
=
ArcAVMClothInfo
()
val
clothInfo
=
ArcAVMClothInfo
()
clothInfo
.
d1
=
60
0
clothInfo
.
d1
=
12
0
clothInfo
.
d3
=
500
0
clothInfo
.
d3
=
69
0
clothInfo
.
d4
=
490
0
clothInfo
.
d4
=
69
0
clothInfo
.
d5
=
500
0
clothInfo
.
d5
=
69
0
clothInfo
.
d6
=
400
0
clothInfo
.
d6
=
69
0
val
chessInfoFront
=
ArcAVMChessInfo
(
ArcAVMCameraPosType
.
TYPE_FRONT
)
val
chessInfoFront
=
ArcAVMChessInfo
(
ArcAVMCameraPosType
.
TYPE_FRONT
)
val
chessInfoRight
=
ArcAVMChessInfo
(
ArcAVMCameraPosType
.
TYPE_RIGHT
)
val
chessInfoRight
=
ArcAVMChessInfo
(
ArcAVMCameraPosType
.
TYPE_RIGHT
)
val
chessInfoBack
=
ArcAVMChessInfo
(
ArcAVMCameraPosType
.
TYPE_BACK
)
val
chessInfoBack
=
ArcAVMChessInfo
(
ArcAVMCameraPosType
.
TYPE_BACK
)
...
@@ -144,36 +144,38 @@ fun ArcVisDriveAVMEngine.autoCalib(calibResultPath:File,lookupPath:File){
...
@@ -144,36 +144,38 @@ fun ArcVisDriveAVMEngine.autoCalib(calibResultPath:File,lookupPath:File){
val
chessInfoList
=
arrayListOf
(
chessInfoFront
,
chessInfoRight
,
chessInfoBack
,
chessInfoLeft
)
val
chessInfoList
=
arrayListOf
(
chessInfoFront
,
chessInfoRight
,
chessInfoBack
,
chessInfoLeft
)
val
calibResult
=
ArcAVMCalibResult
()
val
calibResult
=
ArcAVMCalibResult
()
val
lookupTable
=
ArcAVMLookupTable
()
val
lookupTable
=
ArcAVMLookupTable
()
var
result
=
autoCalibrate
(
avmInputImages
,
clothInfo
,
chessInfoList
,
calibResult
,
lookupTable
)
return
autoCalibrate
(
avmInputImages
,
clothInfo
,
chessInfoList
,
calibResult
,
lookupTable
).
also
{
result
->
LogUtils
.
i
(
"autoCalibrate:${result}
"
)
LogUtils
.
i
(
"auto calibrate result = $result
"
)
if
(
result
==
ArcErrorInfo
.
ARC_ERROR_OK
)
{
if
(
result
==
ArcErrorInfo
.
ARC_ERROR_OK
)
{
LogUtils
.
i
(
"autoCalibrate calibResult:${calibResult.data.size}"
)
LogUtils
.
i
(
"autoCalibrate calibResult:${calibResult.data.size}"
)
LogUtils
.
i
(
"autoCalibrate lookupTable:${lookupTable.data.size}"
)
LogUtils
.
i
(
"autoCalibrate lookupTable:${lookupTable.data.size}"
)
spUtils
.
put
(
CALIB_RESULT
,
FileIOUtils
.
writeFileFromBytesByChannel
(
calibResultPath
,
calibResult
.
data
,
true
))
spUtils
.
put
(
CALIB_RESULT
,
FileIOUtils
.
writeFileFromBytesByChannel
(
calibResultPath
,
calibResult
.
data
,
true
))
spUtils
.
put
(
LOOKUP_TABLE
,
FileIOUtils
.
writeFileFromBytesByChannel
(
lookupPath
,
lookupTable
.
data
,
true
))
spUtils
.
put
(
LOOKUP_TABLE
,
FileIOUtils
.
writeFileFromBytesByChannel
(
lookupPath
,
lookupTable
.
data
,
true
))
}
else
{
}
else
{
spUtils
.
put
(
CALIB_RESULT
,
false
)
spUtils
.
put
(
LOOKUP_TABLE
,
false
)
LogUtils
.
e
(
"autoCalibrate failed, chessPoints1:${chessInfoList[0].leftChessPoints[0].x}_${chessInfoList[0].leftChessPoints[0].y},"
+
LogUtils
.
e
(
"autoCalibrate failed, chessPoints1:${chessInfoList[0].leftChessPoints[0].x}_${chessInfoList[0].leftChessPoints[0].y},"
+
"chessPoints2:${chessInfoList[1].leftChessPoints[1].x}_${chessInfoList[1].leftChessPoints[1].y},"
+
"chessPoints2:${chessInfoList[1].leftChessPoints[1].x}_${chessInfoList[1].leftChessPoints[1].y},"
+
"chessPoints3:${chessInfoList[2].leftChessPoints[2].x}_${chessInfoList[2].leftChessPoints[2].y},"
+
"chessPoints3:${chessInfoList[2].leftChessPoints[2].x}_${chessInfoList[2].leftChessPoints[2].y},"
+
"chessPoints4:${chessInfoList[3].leftChessPoints[3].x}_${chessInfoList[3].leftChessPoints[3].y},"
)
"chessPoints4:${chessInfoList[3].leftChessPoints[3].x}_${chessInfoList[3].leftChessPoints[3].y},"
)
}
}
val
getCalibInfo
=
ArcAVMCalibInfo
()
val
getCalibInfo
=
ArcAVMCalibInfo
()
val
getCalibResult
=
ArcAVMCalibResult
()
val
getCalibResult
=
ArcAVMCalibResult
()
val
getLookupTable
=
ArcAVMLookupTable
()
val
getLookupTable
=
ArcAVMLookupTable
()
result
=
getCalibrateResults
(
getCalibInfo
,
getCalibResult
,
getLookupTable
)
val
getCalibrateResults
=
getCalibrateResults
(
getCalibInfo
,
getCalibResult
,
getLookupTable
)
if
(
result
==
ArcErrorInfo
.
ARC_ERROR_OK
)
{
if
(
getCalibrateResults
==
ArcErrorInfo
.
ARC_ERROR_OK
)
{
LogUtils
.
i
(
"getCalibrateResults, calibInfo:${getCalibInfo}, result:${getCalibResult.data.size}, lookup:${getLookupTable.data.size}"
)
LogUtils
.
i
(
"getCalibrateResults, calibInfo:${getCalibInfo}, result:${getCalibResult.data.size}, lookup:${getLookupTable.data.size}"
)
}
}
}
}
}
fun
ArcVisDriveAVMEngine
.
manualCalib
(
calibResultPath
:
File
,
lookupPath
:
File
){
fun
ArcVisDriveAVMEngine
.
manualCalib
(
calibResultPath
:
File
,
lookupPath
:
File
){
val
clothInfo
=
ArcAVMClothInfo
()
val
clothInfo
=
ArcAVMClothInfo
()
clothInfo
.
d1
=
60
0
clothInfo
.
d1
=
12
0
clothInfo
.
d3
=
500
0
clothInfo
.
d3
=
68
0
clothInfo
.
d4
=
490
0
clothInfo
.
d4
=
68
0
clothInfo
.
d5
=
500
0
clothInfo
.
d5
=
81
0
clothInfo
.
d6
=
400
0
clothInfo
.
d6
=
81
0
val
chessInfoFront
=
ArcAVMChessInfo
()
val
chessInfoFront
=
ArcAVMChessInfo
()
chessInfoFront
.
imagePosType
=
ArcAVMCameraPosType
.
TYPE_FRONT
chessInfoFront
.
imagePosType
=
ArcAVMCameraPosType
.
TYPE_FRONT
if
(
chessInfoFront
.
leftChessPoints
!=
null
)
{
if
(
chessInfoFront
.
leftChessPoints
!=
null
)
{
...
@@ -339,8 +341,8 @@ fun configCameraSequence(path:String,callback: ImageReaderEx.ImageCallback): Pic
...
@@ -339,8 +341,8 @@ fun configCameraSequence(path:String,callback: ImageReaderEx.ImageCallback): Pic
return
PictureConfiguration
.
get
(
PictureSequenceSource
.
GENERAL_CAMERA
).
apply
{
return
PictureConfiguration
.
get
(
PictureSequenceSource
.
GENERAL_CAMERA
).
apply
{
mPath
=
path
mPath
=
path
mImageFormat
=
SpmCameraDevice
.
ImageDataCallback
.
IMAGE_FORMAT_NV21
mImageFormat
=
SpmCameraDevice
.
ImageDataCallback
.
IMAGE_FORMAT_NV21
mPicWidth
=
1280
mPicWidth
=
IMAGE_WIDTH
mPicHeight
=
720
mPicHeight
=
IMAGE_HEIGHT
mImageCallback
=
callback
mImageCallback
=
callback
}
}
}
}
app/src/main/java/com/intergration/avm/glsurface/MyGLRenderer.kt
View file @
bde90caf
package
com.
waytous.avmdetect
package
com.
intergration.avm.glsurface
import
android.opengl.GLES20
import
android.opengl.GLES20
import
android.opengl.GLSurfaceView
import
android.opengl.GLSurfaceView
import
android.opengl.Matrix
import
android.opengl.Matrix
import
com.blankj.utilcode.util.LogUtils
import
com.blankj.utilcode.util.LogUtils
import
com.intergration.avm.glsurface.MyGLProgram
import
java.nio.ByteBuffer
import
java.nio.ByteBuffer
import
javax.microedition.khronos.opengles.GL10
import
javax.microedition.khronos.opengles.GL10
...
...
app/src/main/java/com/intergration/avm/glsurface/MyGLSurfaceView.kt
View file @
bde90caf
package
com.
waytous.avmdetect
package
com.
intergration.avm.glsurface
import
android.content.Context
import
android.content.Context
import
android.opengl.GLSurfaceView
import
android.opengl.GLSurfaceView
...
...
app/src/main/java/com/intergration/avm/presentation/AuxiliaryScreenPresentation.kt
View file @
bde90caf
...
@@ -9,8 +9,7 @@ import com.intergration.avm.R
...
@@ -9,8 +9,7 @@ import com.intergration.avm.R
import
com.intergration.avm.utils.IMAGE_HEIGHT
import
com.intergration.avm.utils.IMAGE_HEIGHT
import
com.intergration.avm.utils.IMAGE_WIDTH
import
com.intergration.avm.utils.IMAGE_WIDTH
import
com.mediatek.smartplatform.PictureConfiguration
import
com.mediatek.smartplatform.PictureConfiguration
import
com.waytous.avmdetect.MyGLSurfaceView
import
com.intergration.avm.glsurface.MyGLSurfaceView
import
org.greenrobot.eventbus.EventBus
class
AuxiliaryScreenPresentation
(
outerContext
:
Context
,
display
:
Display
)
:
class
AuxiliaryScreenPresentation
(
outerContext
:
Context
,
display
:
Display
)
:
Presentation
(
outerContext
,
display
)
{
Presentation
(
outerContext
,
display
)
{
...
@@ -26,8 +25,7 @@ class AuxiliaryScreenPresentation(outerContext: Context, display: Display) :
...
@@ -26,8 +25,7 @@ class AuxiliaryScreenPresentation(outerContext: Context, display: Display) :
frameLayout
=
layoutInflater
.
inflate
(
R
.
layout
.
layout_presentation
,
null
)
as
FrameLayout
frameLayout
=
layoutInflater
.
inflate
(
R
.
layout
.
layout_presentation
,
null
)
as
FrameLayout
setContentView
(
frameLayout
)
setContentView
(
frameLayout
)
rendererView
=
frameLayout
.
findViewById
<
MyGLSurfaceView
?>(
R
.
id
.
rendererView
).
also
{
rendererView
=
frameLayout
.
findViewById
<
MyGLSurfaceView
?>(
R
.
id
.
rendererView
).
also
{
it
.
setDisplayOrientation
(
90
)
it
.
setYuvDataSize
(
IMAGE_HEIGHT
,
IMAGE_WIDTH
)
it
.
setYuvDataSize
(
IMAGE_WIDTH
,
IMAGE_HEIGHT
)
}
}
}
}
...
...
app/src/main/java/com/intergration/avm/utils/Utils.kt
View file @
bde90caf
...
@@ -40,6 +40,8 @@ private val serviceConnection: ServiceConnection = object : ServiceConnection {
...
@@ -40,6 +40,8 @@ private val serviceConnection: ServiceConnection = object : ServiceConnection {
}
}
override
fun
onServiceDisconnected
(
name
:
ComponentName
?)
{
override
fun
onServiceDisconnected
(
name
:
ComponentName
?)
{
LogUtils
.
d
(
"停止副屏服务..."
)
multiScreenService
?.
dismissSecondPresentation
()
//恢复置空
//恢复置空
multiScreenService
=
null
multiScreenService
=
null
}
}
...
@@ -51,10 +53,8 @@ fun Context.openAuxiliaryPresentation(){
...
@@ -51,10 +53,8 @@ fun Context.openAuxiliaryPresentation(){
}
}
fun
Context
.
closeAuxiliaryPresentation
(){
fun
Context
.
closeAuxiliaryPresentation
(){
if
(
multiScreenService
!=
null
)
{
LogUtils
.
i
(
"解绑副屏服务"
)
multiScreenService
?.
dismissSecondPresentation
()
unbindService
(
serviceConnection
)
unbindService
(
serviceConnection
)
}
}
}
fun
feedData
(
data
:
ByteArray
){
fun
feedData
(
data
:
ByteArray
){
...
...
app/src/main/res/layout/layout_presentation.xml
View file @
bde90caf
...
@@ -9,7 +9,7 @@
...
@@ -9,7 +9,7 @@
android:textSize=
"24sp"
android:textSize=
"24sp"
android:textColor=
"@android:color/holo_blue_light"
android:textColor=
"@android:color/holo_blue_light"
android:layout_gravity=
"center_horizontal|top"
/>
android:layout_gravity=
"center_horizontal|top"
/>
<com.
waytous.avmdetect
.MyGLSurfaceView
<com.
intergration.avm.glsurface
.MyGLSurfaceView
android:id=
"@+id/rendererView"
android:id=
"@+id/rendererView"
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
/>
android:layout_height=
"match_parent"
/>
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment