ไธไธชๅ่ฝไธฐๅฏ็Androidไปปๅก็ฎก็ๅบ็จ๏ผๆฏๆๅฐ็ไฝ็ฝฎๆ้ใ่ฏญ้ณๅๅปบไปปๅกๅๆบ่ฝๅทฅไฝๆต้ๆใๆฌ้กน็ฎๅฑ็คบไบ็ฐไปฃAndroidๅผๅ็ๆไฝณๅฎ่ทตๅๅฎๆดๆๆฏๆ ใ
- ไปปๅกๅ่กจ๏ผๆฏๆๆฅ็ใ็ญ้๏ผๅ จ้จ/ๅทฒๅฎๆ/ๆชๅฎๆ๏ผๅๆ็ดขไปปๅก
- ไปปๅก่ฏฆๆ ๏ผๅฎๆด็ไปปๅกไฟกๆฏๅฑ็คบๅ็ผ่พๅ่ฝ
- ไปปๅกๅๅปบ๏ผๆฏๆๆๅจๅๅปบๅ่ฏญ้ณๅๅปบไธค็งๆนๅผ
- ๆฐๆฎๆไน ๅ๏ผไฝฟ็จRoomๆฐๆฎๅบๆฌๅฐๅญๅจ
- ่ฏญ้ณๅๅปบไปปๅก๏ผ้ฟๆๆ้ฎๅฝ้ณ๏ผ่ชๅจ่ฝฌๆขไธบๆๆฌๅนถๅๅปบไปปๅก
- Whisper้ๆ๏ผๆฌๅฐ่ฏญ้ณ่ฏๅซ๏ผๆฏๆไธญๆ่ฏญ้ณ่ฝฌๆๅญ
- ๆบ่ฝๅทฅไฝๆต๏ผ้่ฟAIๅ็ซฏ่ชๅจ่งฃๆ่ฏญ้ณๅ ๅฎน็ๆ็ปๆๅไปปๅก
- ๅฐๅพ้็น๏ผๅจๅฐๅพไธ้ๆฉไปปๅก็ธๅ ณไฝ็ฝฎ
- ๅฐ็ๅดๆ ๏ผ่ฟๅ ฅๆๅฎๅบๅ่ชๅจ่งฆๅไปปๅกๆ้
- ้ซๅพทๅฐๅพ้ๆ๏ผไฝฟ็จ้ซๅพทๅฐๅพSDKๆไพๅฎไฝๅๅฐๅพๆๅก
- ไฝ็ฝฎๆ้็ฎก็๏ผๆบ่ฝๅค็ไฝ็ฝฎๆ้่ฏทๆฑ
- ๆถ้ดๆ้๏ผๅบไบไปปๅกๅฐๆๆถ้ด็ๅฎๆถๆ้
- ไฝ็ฝฎๆ้๏ผๅบไบๅฐ็ๅดๆ ็ไฝ็ฝฎ่งฆๅๆ้
- ๅๅฐไปปๅก๏ผไฝฟ็จWorkManager็กฎไฟๅบ็จ่ขซๆๆญปๅไป่ฝๆญฃๅธธๆ้
- ้็ฅ็ฎก็๏ผๆฏๆ้็ฅๆธ ้ๅ็นๅป่ทณ่ฝฌ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Presentation โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ Screens โ ViewModels โ UI Components โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ Domain โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ Models โ UseCases โ Repository โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ Data โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ Repository Impl โ DataSource โ Services โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
- Jetpack Compose - ็ฐไปฃๅฃฐๆๅผUIๆกๆถ
- Material Design 3 - ๆๆฐ่ฎพ่ฎก่ง่
- Navigation Compose - ้กต้ขๅฏผ่ช็ฎก็
- Hilt Navigation Compose - ไพ่ตๆณจๅ ฅ้ๆ
- MVVM + Repository - ๆธ ๆฐ็ๆถๆๅๅฑ
- UseCase - ไธๅก้ป่พๅฐ่ฃ
- Hilt/Dagger - ไพ่ตๆณจๅ ฅๆกๆถ
- Kotlin Coroutines + Flow - ๅผๆญฅ็ผ็จๅๅๅบๅผๆฐๆฎๆต
- Room Database - ๆฌๅฐๆฐๆฎๅบๅญๅจ
- DataStore - ็จๆทๅๅฅฝ่ฎพ็ฝฎๅญๅจ
- Repository Pattern - ๆฐๆฎ่ฎฟ้ฎๆฝ่ฑก
- WorkManager - ๅๅฐไปปๅก่ฐๅบฆ
- GeofencingClient - ๅฐ็ๅดๆ ็ฎก็
- NotificationManager - ้็ฅ็ณป็ป
- ้ซๅพทๅฐๅพSDK - ๅฐๅพๅๅฎไฝๆๅก
- Whisper - ๆฌๅฐ่ฏญ้ณ่ฏๅซ
- OkHttp - ็ฝ็ป่ฏทๆฑ
- Timber - ๆฅๅฟ่ฎฐๅฝ
- ไปปๅกๅ่กจ้กต้ข
- ไปปๅก่ฏฆๆ ้กต้ข
- ๅฐๅพ้็น้กต้ข
- ่ฏญ้ณๅฝๅถ็้ข
- Android Studio Arctic Fox ๆๆด้ซ็ๆฌ
- Kotlin 1.9+
- Android SDK API 26+ (Android 8.0+)
- Gradle 8.0+
git clone https://github.com/MoQiii/GeoTask.git
cd GeoTask-
้ ็ฝฎ้ซๅพทๅฐๅพAPIๅฏ้ฅ
- ๅจ้ซๅพทๅผๆพๅนณๅฐ็ณ่ฏทAPIๅฏ้ฅ
- ๅจ
app/src/main/AndroidManifest.xmlไธญๆฟๆขๅฏ้ฅ๏ผ
<meta-data android:name="com.amap.api.v2.apikey" android:value="YOUR_API_KEY_HERE" />
-
้ ็ฝฎๅ็ซฏAPI๏ผๅฏ้๏ผ
- ๅฆๆ้่ฆไฝฟ็จAIๅทฅไฝๆตๅ่ฝ๏ผ้
็ฝฎ
kotlin-clientๆจกๅไธญ็APIๅฐๅ - ไฟฎๆน
ApiClient้ ็ฝฎๆไปถ
- ๅฆๆ้่ฆไฝฟ็จAIๅทฅไฝๆตๅ่ฝ๏ผ้
็ฝฎ
-
ๅๆญฅ้กน็ฎ
./gradlew build
-
่ฟ่กๅบ็จ
- ่ฟๆฅAndroid่ฎพๅคๆๅฏๅจๆจกๆๅจ
- ็นๅปAndroid Studio็่ฟ่กๆ้ฎ
GeoTask/
โโโ app/
โ โโโ src/main/java/com/syj/geotask/
โ โ โโโ presentation/ # UIๅฑ
โ โ โ โโโ screens/ # ้กต้ข
โ โ โ โโโ viewmodel/ # ViewModel
โ โ โ โโโ ui-components/ # UI็ปไปถ
โ โ โโโ domain/ # ้ขๅๅฑ
โ โ โ โโโ model/ # ๆฐๆฎๆจกๅ
โ โ โ โโโ repository/ # ไปๅจๆฅๅฃ
โ โ โ โโโ usecase/ # ็จไพ
โ โ โโโ data/ # ๆฐๆฎๅฑ
โ โ โ โโโ repository/ # ไปๅจๅฎ็ฐ
โ โ โ โโโ datasource/ # ๆฐๆฎๆบ
โ โ โ โโโ service/ # ๆๅก
โ โ โ โโโ receiver/ # ๅนฟๆญๆฅๆถๅจ
โ โ โโโ speech/ # ่ฏญ้ณ่ฏๅซ
โ โ โโโ utils/ # ๅทฅๅ
ท็ฑป
โ โ โโโ di/ # ไพ่ตๆณจๅ
ฅ
โ โโโ libs/ # ๆฌๅฐๅบๆไปถ
โ โโโ assets/ # ่ตๆบๆไปถ
โโโ kotlin-client/ # APIๅฎขๆท็ซฏๆจกๅ
โโโ gradle/ # Gradle้
็ฝฎ
โโโ docs/ # ๆๆกฃ
// 1. ้ฟๆๆ้ฎๅผๅงๅฝ้ณ
button.onLongPress {
voiceTaskManager.startRecording()
}
// 2. ๆพๅผๆ้ฎ็ปๆๅฝ้ณๅนถๅค็
button.onRelease {
voiceTaskManager.stopRecording { audioFile ->
// 3. ่ฏญ้ณ่ฝฌๆๅญ
speechToTextManager.recognize(audioFile) { text ->
// 4. ่ฐ็จAIๅทฅไฝๆต
aiControllerApi.createTask(text) { task ->
// 5. ไฟๅญไปปๅกๅนถๅทๆฐ็้ข
taskRepository.insert(task)
}
}
}
}// ๅๅปบๅฐ็ๅดๆ
geofenceManager.createGeofence(
latitude = task.latitude,
longitude = task.longitude,
radius = task.geofenceRadius
) { geofenceId ->
// ๆณจๅๅฐ็ๅดๆ
geofencingClient.addGeofences(geofenceRequest, pendingIntent)
}
// ๅฐ็ๅดๆ ่งฆๅๅค็
class GeofenceBroadcastReceiver : BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) {
// ๅ้ไปปๅกๆ้้็ฅ
notificationManager.showTaskNotification(task)
}
}ๅบ็จ้่ฆไปฅไธๆ้๏ผ
| ๆ้ | ็จ้ | ๅฟ ้ๆง |
|---|---|---|
ACCESS_FINE_LOCATION |
็ฒพ็กฎๅฎไฝ | ๅฟ ้ |
ACCESS_COARSE_LOCATION |
็ฒ็ฅๅฎไฝ | ๅฟ ้ |
ACCESS_BACKGROUND_LOCATION |
ๅๅฐๅฎไฝ | ๅฏ้ |
RECORD_AUDIO |
ๅฝ้ณๅ่ฝ | ๅฟ ้ |
POST_NOTIFICATIONS |
ๅ้้็ฅ | ๅฟ ้ |
INTERNET |
็ฝ็ป่ฎฟ้ฎ | ๅฟ ้ |
./gradlew test./gradlew connectedAndroidTest- ้ๆฑๆๆกฃ - ่ฏฆ็ป็ๅ่ฝ้ๆฑ่ฏดๆ
- ๆๆฏๆๆกฃ - ๆๆฏๅฎ็ฐ็ป่ๅ้ฎ้ข่งฃๅณ่ฎฐๅฝ
- APIๆๆกฃ - ๅ็ซฏAPIๆฅๅฃๆๆกฃ
- Fork ๆฌไปๅบ
- ๅๅปบ็นๆงๅๆฏ (
git checkout -b feature/AmazingFeature) - ๆไบคๆดๆน (
git commit -m 'Add some AmazingFeature') - ๆจ้ๅฐๅๆฏ (
git push origin feature/AmazingFeature) - ๅผๅฏ Pull Request
ๆฌ้กน็ฎ้็จ MIT ่ฎธๅฏ่ฏ - ๆฅ็ LICENSE ๆไปถไบ่งฃ่ฏฆๆ
- ้ซๅพทๅฐๅพ - ๆไพๅฐๅพๅๅฎไฝๆๅก
- Whisper - ่ฏญ้ณ่ฏๅซๅผๆ
- Jetpack Compose - ็ฐไปฃUIๆกๆถ
- Hilt - ไพ่ตๆณจๅ ฅๆกๆถ
ๅฆๆ้ฎ้ขๆๅปบ่ฎฎ๏ผ่ฏท้่ฟไปฅไธๆนๅผ่็ณป๏ผ
- ๆไบค Issue
โญ ๅฆๆ่ฟไธช้กน็ฎๅฏนไฝ ๆๅธฎๅฉ๏ผ่ฏท็ปๅฎไธไธชๆๆ ๏ผ