Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
N
NewParkAPP
Project
Project
Details
Activity
Releases
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
YONG-LIN SU
NewParkAPP
Commits
8cf2d821
Commit
8cf2d821
authored
Jul 28, 2022
by
YONG-LIN SU
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
移植車牌輸入功能
parent
be9849d8
Changes
8
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
703 additions
and
2 deletions
+703
-2
misc.xml
.idea/misc.xml
+1
-0
AndroidManifest.xml
app/src/main/AndroidManifest.xml
+3
-0
Common.java
app/src/main/java/ecom/android/newparkapp/Common.java
+72
-0
T02KeyInPlateNumberActivity.java
.../android/newparkapp/view/T02KeyInPlateNumberActivity.java
+117
-0
T02StartActivity.java
...n/java/ecom/android/newparkapp/view/T02StartActivity.java
+16
-1
T02StartViewModel.java
.../ecom/android/newparkapp/viewModel/T02StartViewModel.java
+8
-0
activity_t02_key_in_plate_number.xml
app/src/main/res/layout/activity_t02_key_in_plate_number.xml
+486
-0
activity_t02_start.xml
app/src/main/res/layout/activity_t02_start.xml
+0
-1
No files found.
.idea/misc.xml
View file @
8cf2d821
...
...
@@ -6,6 +6,7 @@
<entry
key=
"..\:/Users/pp931/Desktop/RD/Projects/NewParkApp/app/src/main/res/layout/activity_main.xml"
value=
"0.34375"
/>
<entry
key=
"..\:/Users/pp931/Desktop/RD/Projects/NewParkApp/app/src/main/res/layout/activity_t01_bulletin_board.xml"
value=
"0.34375"
/>
<entry
key=
"..\:/Users/pp931/Desktop/RD/Projects/NewParkApp/app/src/main/res/layout/activity_t01_import_db.xml"
value=
"0.34375"
/>
<entry
key=
"..\:/Users/pp931/Desktop/RD/Projects/NewParkApp/app/src/main/res/layout/activity_t02_key_in_plate_number.xml"
value=
"0.34375"
/>
<entry
key=
"..\:/Users/pp931/Desktop/RD/Projects/NewParkApp/app/src/main/res/layout/activity_t02_select_road.xml"
value=
"0.34375"
/>
<entry
key=
"..\:/Users/pp931/Desktop/RD/Projects/NewParkApp/app/src/main/res/layout/activity_t02_select_space.xml"
value=
"0.34375"
/>
<entry
key=
"..\:/Users/pp931/Desktop/RD/Projects/NewParkApp/app/src/main/res/layout/activity_t02_select_vehicle_type.xml"
value=
"0.34375"
/>
...
...
app/src/main/AndroidManifest.xml
View file @
8cf2d821
...
...
@@ -27,6 +27,9 @@
android:supportsRtl=
"true"
android:theme=
"@style/Theme.AppCompat.Light.NoActionBar"
tools:targetApi=
"31"
>
<activity
android:name=
".view.T02KeyInPlateNumberActivity"
android:exported=
"false"
/>
<activity
android:name=
".view.T02SelectRoadActivity"
android:exported=
"false"
/>
...
...
app/src/main/java/ecom/android/newparkapp/Common.java
View file @
8cf2d821
...
...
@@ -586,4 +586,76 @@ public class Common {
img
=
Bitmap
.
createBitmap
(
img
,
0
,
0
,
width
,
height
,
matrix
,
true
);
return
img
;
}
public
static
boolean
plateRuleCheck
(
String
plateNumber
)
{
boolean
isLegal
=
true
;
// 空字串處理
if
(
plateNumber
==
null
||
plateNumber
.
length
()
==
0
||
plateNumber
.
trim
().
isEmpty
()
||
plateNumber
.
length
()
>
7
){
isLegal
=
false
;
}
return
isLegal
;
}
public
static
String
plateModifyByRule
(
String
plateNumber
){
if
(
plateNumber
.
length
()
<=
7
){
int
dashIndex
=
plateNumber
.
indexOf
(
"-"
);
if
(
dashIndex
==
-
1
){
return
plateNumber
;
}
boolean
flag
=
false
;
int
asciiA
=
'A'
;
int
asciiZ
=
'Z'
;
if
(
dashIndex
==
2
||
dashIndex
==
3
){
for
(
int
i
=
0
;
i
<
dashIndex
;
i
++){
int
c
=
plateNumber
.
charAt
(
i
);
if
(
c
>=
asciiA
&&
c
<=
asciiZ
){
flag
=
true
;
break
;
}
}
if
(
flag
){
for
(
int
i
=
0
;
i
<
dashIndex
;
i
++){
if
(
plateNumber
.
charAt
(
i
)
==
'1'
){
String
newPlateNumber
=
plateNumber
.
substring
(
0
,
i
)
+
"I"
+
plateNumber
.
substring
(
i
+
1
);
plateNumber
=
newPlateNumber
;
}
if
(
plateNumber
.
charAt
(
i
)
==
'0'
){
String
newPlateNumber
=
plateNumber
.
substring
(
0
,
i
)
+
"O"
+
plateNumber
.
substring
(
i
+
1
);
plateNumber
=
newPlateNumber
;
}
}
}
}
if
(
dashIndex
>
3
){
for
(
int
i
=
dashIndex
+
1
;
i
<
plateNumber
.
length
();
i
++){
int
c
=
plateNumber
.
charAt
(
i
);
if
(
c
>=
asciiA
&&
c
<=
asciiZ
){
flag
=
true
;
break
;
}
}
if
(
flag
){
for
(
int
i
=
dashIndex
+
1
;
i
<
plateNumber
.
length
();
i
++){
if
(
plateNumber
.
charAt
(
i
)
==
'1'
){
String
newPlateNumber
=
plateNumber
.
substring
(
0
,
i
)
+
"I"
+
plateNumber
.
substring
(
i
+
1
);
plateNumber
=
newPlateNumber
;
}
if
(
plateNumber
.
charAt
(
i
)
==
'0'
){
String
newPlateNumber
=
plateNumber
.
substring
(
0
,
i
)
+
"O"
+
plateNumber
.
substring
(
i
+
1
);
plateNumber
=
newPlateNumber
;
}
}
}
}
}
else
{
String
newPlateNumber
=
plateNumber
.
substring
(
0
,
7
);
return
plateModifyByRule
(
newPlateNumber
);
}
return
plateNumber
;
}
}
app/src/main/java/ecom/android/newparkapp/view/T02KeyInPlateNumberActivity.java
0 → 100644
View file @
8cf2d821
package
ecom
.
android
.
newparkapp
.
view
;
import
androidx.appcompat.app.AppCompatActivity
;
import
androidx.databinding.DataBindingUtil
;
import
android.content.Intent
;
import
android.os.Bundle
;
import
ecom.android.newparkapp.Common
;
import
ecom.android.newparkapp.R
;
import
ecom.android.newparkapp.databinding.ActivityT02KeyInPlateNumberBinding
;
public
class
T02KeyInPlateNumberActivity
extends
AppCompatActivity
{
private
ActivityT02KeyInPlateNumberBinding
dataBinding
;
@Override
protected
void
onCreate
(
Bundle
savedInstanceState
)
{
super
.
onCreate
(
savedInstanceState
);
dataBinding
=
DataBindingUtil
.
setContentView
(
this
,
R
.
layout
.
activity_t02_key_in_plate_number
);
eventBinding
();
}
private
void
eventBinding
()
{
dataBinding
.
btn0
.
setOnClickListener
(
view
->
keyIn
(
"0"
));
dataBinding
.
btn1
.
setOnClickListener
(
view
->
keyIn
(
"1"
));
dataBinding
.
btn2
.
setOnClickListener
(
view
->
keyIn
(
"2"
));
dataBinding
.
btn3
.
setOnClickListener
(
view
->
keyIn
(
"3"
));
dataBinding
.
btn4
.
setOnClickListener
(
view
->
keyIn
(
"4"
));
dataBinding
.
btn5
.
setOnClickListener
(
view
->
keyIn
(
"5"
));
dataBinding
.
btn6
.
setOnClickListener
(
view
->
keyIn
(
"6"
));
dataBinding
.
btn7
.
setOnClickListener
(
view
->
keyIn
(
"7"
));
dataBinding
.
btn8
.
setOnClickListener
(
view
->
keyIn
(
"8"
));
dataBinding
.
btn9
.
setOnClickListener
(
view
->
keyIn
(
"9"
));
dataBinding
.
btnA
.
setOnClickListener
(
view
->
keyIn
(
"A"
));
dataBinding
.
btnB
.
setOnClickListener
(
view
->
keyIn
(
"B"
));
dataBinding
.
btnC
.
setOnClickListener
(
view
->
keyIn
(
"C"
));
dataBinding
.
btnD
.
setOnClickListener
(
view
->
keyIn
(
"D"
));
dataBinding
.
btnE
.
setOnClickListener
(
view
->
keyIn
(
"E"
));
dataBinding
.
btnF
.
setOnClickListener
(
view
->
keyIn
(
"F"
));
dataBinding
.
btnG
.
setOnClickListener
(
view
->
keyIn
(
"G"
));
dataBinding
.
btnH
.
setOnClickListener
(
view
->
keyIn
(
"H"
));
dataBinding
.
btnI
.
setOnClickListener
(
view
->
keyIn
(
"I"
));
dataBinding
.
btnJ
.
setOnClickListener
(
view
->
keyIn
(
"J"
));
dataBinding
.
btnK
.
setOnClickListener
(
view
->
keyIn
(
"K"
));
dataBinding
.
btnL
.
setOnClickListener
(
view
->
keyIn
(
"L"
));
dataBinding
.
btnM
.
setOnClickListener
(
view
->
keyIn
(
"M"
));
dataBinding
.
btnN
.
setOnClickListener
(
view
->
keyIn
(
"N"
));
dataBinding
.
btnO
.
setOnClickListener
(
view
->
keyIn
(
"O"
));
dataBinding
.
btnP
.
setOnClickListener
(
view
->
keyIn
(
"P"
));
dataBinding
.
btnQ
.
setOnClickListener
(
view
->
keyIn
(
"Q"
));
dataBinding
.
btnR
.
setOnClickListener
(
view
->
keyIn
(
"R"
));
dataBinding
.
btnS
.
setOnClickListener
(
view
->
keyIn
(
"S"
));
dataBinding
.
btnT
.
setOnClickListener
(
view
->
keyIn
(
"T"
));
dataBinding
.
btnU
.
setOnClickListener
(
view
->
keyIn
(
"U"
));
dataBinding
.
btnV
.
setOnClickListener
(
view
->
keyIn
(
"V"
));
dataBinding
.
btnW
.
setOnClickListener
(
view
->
keyIn
(
"W"
));
dataBinding
.
btnX
.
setOnClickListener
(
view
->
keyIn
(
"X"
));
dataBinding
.
btnY
.
setOnClickListener
(
view
->
keyIn
(
"Y"
));
dataBinding
.
btnZ
.
setOnClickListener
(
view
->
keyIn
(
"Z"
));
dataBinding
.
btnDash
.
setOnClickListener
(
view
->
keyIn
(
"-"
));
dataBinding
.
btnArmyPltno
.
setOnClickListener
(
view
->
KeyInSpecial
(
"軍"
));
dataBinding
.
btnTempPltno
.
setOnClickListener
(
view
->
KeyInSpecial
(
"臨"
));
dataBinding
.
btnDelete
.
setOnClickListener
(
view
->
backSpace
());
dataBinding
.
btnInputConfirm
.
setOnClickListener
(
view
->
confirm
());
}
private
void
keyIn
(
String
word
){
String
newPlateNumber
=
dataBinding
.
editText
.
getText
().
toString
()
+
word
;
if
(
Common
.
plateRuleCheck
(
newPlateNumber
)){
dataBinding
.
editText
.
setText
(
newPlateNumber
);
}
}
private
void
KeyInSpecial
(
String
word
){
String
currentSpecialString
=
dataBinding
.
isSpecial
.
getText
().
toString
();
switch
(
word
){
case
"軍"
:
if
(
currentSpecialString
.
equals
(
"軍"
)){
dataBinding
.
isSpecial
.
setText
(
""
);
}
else
{
dataBinding
.
isSpecial
.
setText
(
"軍"
);
}
break
;
case
"臨"
:
if
(
currentSpecialString
.
equals
(
"臨"
)){
dataBinding
.
isSpecial
.
setText
(
""
);
}
else
{
dataBinding
.
isSpecial
.
setText
(
"臨"
);
}
break
;
default
:
break
;
}
}
private
void
backSpace
(){
String
currentPlateNumber
=
dataBinding
.
editText
.
getText
().
toString
();
if
(
currentPlateNumber
.
length
()
>
0
){
String
newPlateNumber
=
currentPlateNumber
.
substring
(
0
,
currentPlateNumber
.
length
()
-
1
);
dataBinding
.
editText
.
setText
(
newPlateNumber
);
}
}
private
void
confirm
(){
Intent
intent
=
getIntent
();
intent
.
putExtra
(
"PlateNumber"
,
dataBinding
.
editText
.
getText
().
toString
());
setResult
(
RESULT_OK
,
intent
);
finish
();
}
}
\ No newline at end of file
app/src/main/java/ecom/android/newparkapp/view/T02StartActivity.java
View file @
8cf2d821
...
...
@@ -34,6 +34,7 @@ public class T02StartActivity extends AppCompatActivity {
private
ActivityResultLauncher
vehicleTypeResultLauncher
;
private
ActivityResultLauncher
spaceResultLauncher
;
private
ActivityResultLauncher
plateNumberResultLauncher
;
private
User
currentUser
;
@Override
...
...
@@ -60,6 +61,8 @@ public class T02StartActivity extends AppCompatActivity {
dataBinding
.
btnParkingSpace
.
setOnClickListener
(
v
->
btnParkingSpaceOnClicked
());
dataBinding
.
btnVehicleType
.
setOnClickListener
(
v
->
btnVehicleTypeOnClicked
());
dataBinding
.
btnTimeNow
.
setOnClickListener
(
v
->
btnTimeNowOnClicked
());
dataBinding
.
btnPlateNumber
.
setOnClickListener
(
v
->
btnPlateNumberOnClicked
());
dataBinding
.
btnStartBack
.
setOnClickListener
(
v
->
{
finish
();});
}
private
void
resultLauncherRegister
(){
...
...
@@ -80,13 +83,19 @@ public class T02StartActivity extends AppCompatActivity {
t02StartViewModel
.
setSpace
(
selectedSpace
);
}
});
plateNumberResultLauncher
=
registerForActivityResult
(
new
ActivityResultContracts
.
StartActivityForResult
(),
result
->
{
if
(
result
.
getResultCode
()
==
RESULT_OK
&&
result
.
getData
()
!=
null
){
String
plateNumber
=
result
.
getData
().
getStringExtra
(
"PlateNumber"
);
t02StartViewModel
.
setPlateNumber
(
plateNumber
);
}
});
}
private
void
observeBinding
(){
}
private
void
btnParkingSpaceOnClicked
(){
Intent
intent
=
new
Intent
();
Bundle
bundle
=
new
Bundle
();
...
...
@@ -118,4 +127,10 @@ public class T02StartActivity extends AppCompatActivity {
builder
.
create
().
show
();
}
private
void
btnPlateNumberOnClicked
(){
Intent
intent
=
new
Intent
();
intent
.
setClass
(
this
,
T02KeyInPlateNumberActivity
.
class
);
plateNumberResultLauncher
.
launch
(
intent
);
}
}
\ No newline at end of file
app/src/main/java/ecom/android/newparkapp/viewModel/T02StartViewModel.java
View file @
8cf2d821
...
...
@@ -72,6 +72,12 @@ public class T02StartViewModel extends AndroidViewModel {
currentCase
.
setValue
(
tempCase
);
}
public
void
setPlateNumber
(
String
plateNumber
)
{
Case
tempCase
=
currentCase
.
getValue
();
tempCase
.
plateNumber
=
plateNumber
;
currentCase
.
setValue
(
tempCase
);
}
public
void
initCurrentCase
(){
currentCase
.
setValue
(
newCase
());
}
...
...
@@ -170,4 +176,6 @@ public class T02StartViewModel extends AndroidViewModel {
++
nIdx
;
Common
.
updateTXT
(
getApplication
(),
szPath
,
"00"
,
String
.
valueOf
(
nIdx
));
}
}
app/src/main/res/layout/activity_t02_key_in_plate_number.xml
0 → 100644
View file @
8cf2d821
This diff is collapsed.
Click to expand it.
app/src/main/res/layout/activity_t02_start.xml
View file @
8cf2d821
...
...
@@ -126,7 +126,6 @@ tools:layout_editor_absoluteY="25dp">
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:layout_weight=
"0.87"
android:onClick=
"startBackOnck"
android:text=
"@string/label_back"
android:textSize=
"20sp"
/>
</LinearLayout>
...
...
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