Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
P
PrictureTranslate
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
bixing
PrictureTranslate
Commits
bc14c88d
Commit
bc14c88d
authored
Jul 20, 2026
by
bixing
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/media_master' into media_master
parents
9197c2d9
d6231565
Changes
13
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
57 additions
and
405 deletions
+57
-405
build.gradle
app/build.gradle
+31
-57
AndroidManifest.xml
app/src/main/AndroidManifest.xml
+2
-269
PermissionUtil.java
...ain/java/com/ads/cal/picturetranslate/PermissionUtil.java
+9
-35
CameraActivity.java
...com/ads/cal/picturetranslate/activity/CameraActivity.java
+2
-21
PictureTranslateCutOutPhotoActivity.java
...anslate/activity/PictureTranslateCutOutPhotoActivity.java
+1
-1
PictureTranslateListMainActivity.java
...etranslate/activity/PictureTranslateListMainActivity.java
+3
-7
PictureTranslateShowPhotoActivity.java
...translate/activity/PictureTranslateShowPhotoActivity.java
+1
-0
InterstitialAdManager.java
...src/main/java/com/gem/media/ad/InterstitialAdManager.java
+1
-3
InterstitialHalfAdManager.java
...main/java/com/gem/media/ad/InterstitialHalfAdManager.java
+1
-3
OpenAdManager.java
app/src/main/java/com/gem/media/ad/OpenAdManager.java
+1
-3
activity_camera.xml
app/src/main/res/layout/activity_camera.xml
+1
-0
build.gradle
build.gradle
+3
-5
gradle-wrapper.properties
gradle/wrapper/gradle-wrapper.properties
+1
-1
No files found.
app/build.gradle
View file @
bc14c88d
...
...
@@ -4,19 +4,19 @@ plugins {
android
{
namespace
'com.ads.cal.picturetranslate'
compileSdk
3
4
compileSdk
3
5
defaultConfig
{
applicationId
"com.hr.heart.rate"
minSdk
24
targetSdk
3
4
targetSdk
3
5
versionCode
1
versionName
"1.0"
testInstrumentationRunner
"androidx.test.runner.AndroidJUnitRunner"
ndk
{
abiFilters
"armeabi-v7a"
,
"arm64-v8a"
,
"x86"
,
"x86_64"
abiFilters
"armeabi-v7a"
,
"arm64-v8a"
}
}
...
...
@@ -66,7 +66,7 @@ dependencies {
implementation
'androidx.appcompat:appcompat:1.6.1'
implementation
'com.google.android.material:material:1.9.0'
implementation
'androidx.camera:camera-view:1.
2.3
'
implementation
'androidx.camera:camera-view:1.
4.2
'
implementation
'androidx.lifecycle:lifecycle-process:2.6.2'
testImplementation
'junit:junit:4.13.2'
androidTestImplementation
'androidx.test.ext:junit:1.1.5'
...
...
@@ -78,31 +78,33 @@ dependencies {
// To recognize Latin script
implementation
'com.google.mlkit:text-recognition:16.0.
0
'
implementation
'com.google.mlkit:text-recognition:16.0.
1
'
// To recognize Chinese script
implementation
'com.google.mlkit:text-recognition-chinese:16.0.
0
'
implementation
'com.google.mlkit:text-recognition-chinese:16.0.
1
'
// To recognize Devanagari script
implementation
'com.google.mlkit:text-recognition-devanagari:16.0.
0
'
implementation
'com.google.mlkit:text-recognition-devanagari:16.0.
1
'
// To recognize Japanese script
implementation
'com.google.mlkit:text-recognition-japanese:16.0.
0
'
implementation
'com.google.mlkit:text-recognition-japanese:16.0.
1
'
// To recognize Korean script
implementation
'com.google.mlkit:text-recognition-korean:16.0.
0
'
implementation
'com.google.mlkit:text-recognition-korean:16.0.
1
'
implementation
"androidx.camera:camera-core:1.3.0-alpha04"
implementation
"androidx.camera:camera-camera2:1.3.0-alpha04"
implementation
"androidx.camera:camera-lifecycle:1.3.0-alpha04"
// 升级到 1.4.2,修复 libimage_processing_util_jni.so 的 4KB 页对齐问题
// (1.4.0-rc01 于 2024-08-07 包含 16KB page size 修复,兼容 AGP 8.5.x)
implementation
"androidx.camera:camera-core:1.4.2"
implementation
"androidx.camera:camera-camera2:1.4.2"
implementation
"androidx.camera:camera-lifecycle:1.4.2"
//图像裁剪
implementation
'com.edmodo:cropper:
1.0.1
'
implementation
'com.github.bumptech.glide:glide:
4.15.1
'
annotationProcessor
'com.github.bumptech.glide:compiler:
4.12.0
'
implementation
'com.edmodo:cropper:
2.0.0
'
implementation
'com.github.bumptech.glide:glide:
5.0.7
'
annotationProcessor
'com.github.bumptech.glide:compiler:
5.0.7
'
implementation
'pl.droidsonroids.gif:android-gif-drawable:1.2.
27
'
implementation
'pl.droidsonroids.gif:android-gif-drawable:1.2.
31
'
implementation
(
"org.greenrobot:eventbus:3.3.1"
)
// Import the BoM for the Firebase platform
...
...
@@ -116,65 +118,37 @@ dependencies {
//facebook
implementation
'com.facebook.android:facebook-android-sdk:latest.release'
//TU (Necessary)
api
"com.thinkup.sdk:core-tpn:6.5.36.2"
api
"com.thinkup.sdk:nativead-tpn:6.5.36.2"
api
"com.thinkup.sdk:banner-tpn:6.5.36.2"
api
"com.thinkup.sdk:interstitial-tpn:6.5.36.2"
api
"com.thinkup.sdk:rewardedvideo-tpn:6.5.36.2"
api
"com.thinkup.sdk:splash-tpn:6.5.36.2"
//TU (Necessary)
api
"com.thinkup.sdk:core-tpn:6.6.20.1"
//Androidx (Necessary)
api
"androidx.appcompat:appcompat:1.6.1"
api
"androidx.browser:browser:1.4.0"
//Vungle
api
"com.thinkup.sdk:adapter-tpn-vungle:
6.5.36.4
"
api
"com.thinkup.sdk:adapter-tpn-vungle:
7.6.1.1.1
"
api
"com.vungle:vungle-ads:7.6.1"
api
"com.google.android.gms:play-services-basement:18.1.0"
api
"com.google.android.gms:play-services-ads-identifier:18.0.1"
//UnityAds
api
"com.thinkup.sdk:adapter-tpn-unityads:6.5.36"
api
"com.unity3d.ads:unity-ads:4.16.1"
//Bigo
api
"com.thinkup.sdk:adapter-tpn-bigo:6.5.36"
api
"com.bigossp:bigo-ads:5.5.1"
//Pubnative
api
"com.thinkup.sdk:adapter-tpn-pubnative:6.5.36"
api
"net.pubnative:hybid.sdk:3.6.2"
//Pangle
api
"com.thinkup.sdk:adapter-tpn-pangle:
6.5.36
"
api
"com.pangle.global:pag-sdk:7.
6.0.2
"
api
"com.thinkup.sdk:adapter-tpn-pangle:
7.9.1.0.1.0
"
api
"com.pangle.global:pag-sdk:7.
9.1.0
"
api
"com.google.android.gms:play-services-ads-identifier:18.2.0"
//Admob
api
"com.thinkup.sdk:adapter-tpn-admob:6.5.36"
api
"com.google.android.gms:play-services-ads:24.6.0"
//TU Adx SDK(Necessary)
api
"com.thinkup.sdk:adapter-tpn-sdm:6.5.
36.8
"
api
"com.smartdigimkttech.sdk:smartdigimkttech-sdk:6.5.
47
"
api
"com.thinkup.sdk:adapter-tpn-sdm:6.5.
72.1.0
"
api
"com.smartdigimkttech.sdk:smartdigimkttech-sdk:6.5.
72
"
//AppLovin
api
"com.thinkup.sdk:adapter-tpn-applovin:
6.5.36
"
api
"com.applovin:applovin-sdk:13.
4
.0"
api
"com.thinkup.sdk:adapter-tpn-applovin:
13.6.0.1.0
"
api
"com.applovin:applovin-sdk:13.
6
.0"
//Mintegral
api
"com.thinkup.sdk:adapter-tpn-mintegral:6.5.36"
api
"com.mbridge.msdk.oversea:mbridge_android_sdk:16.9.91"
api
"androidx.recyclerview:recyclerview:1.1.0"
//Tramini
api
"com.thinkup.sdk:tramini-plugin-tpn:6.5.36"
// implementation 'com.tencent.bugly:crashreport:latest.release'
api
"com.thinkup.sdk:adapter-tpn-mintegral:17.0.91.1.0"
api
"com.mbridge.msdk.oversea:mbridge_android_sdk:17.0.91"
implementation
'androidx.cardview:cardview:1.0.0'
api
"com.
airbnb.android:lottie:6.1.
0"
//Tramini
api
"com.
thinkup.sdk:tramini-plugin-tpn:6.6.2
0"
}
\ No newline at end of file
app/src/main/AndroidManifest.xml
View file @
bc14c88d
This diff is collapsed.
Click to expand it.
app/src/main/java/com/ads/cal/picturetranslate/PermissionUtil.java
View file @
bc14c88d
package
com
.
ads
.
cal
.
picturetranslate
;
import
android.Manifest
;
import
android.app.Activity
;
import
android.content.Intent
;
import
android.content.pm.PackageManager
;
import
android.os.Build
;
import
androidx.core.app.ActivityCompat
;
import
androidx.core.content.ContextCompat
;
public
class
PermissionUtil
{
public
static
void
checkSelfIMAGEPermission
(
Activity
activity
,
int
requestCode
)
{
if
(
Build
.
VERSION
.
SDK_INT
>=
Build
.
VERSION_CODES
.
TIRAMISU
)
{
if
(
ContextCompat
.
checkSelfPermission
(
activity
,
android
.
Manifest
.
permission
.
READ_MEDIA_IMAGES
)
!=
PackageManager
.
PERMISSION_GRANTED
)
{
// 如果没有权限,请求权限
ActivityCompat
.
requestPermissions
(
activity
,
new
String
[]{
android
.
Manifest
.
permission
.
READ_MEDIA_IMAGES
},
requestCode
);
}
else
{
// 已经有权限,可以访问媒体图像文件
toSystemPhoto
(
activity
,
requestCode
);
}
}
else
{
// 请求外部存储权限
if
(
ContextCompat
.
checkSelfPermission
(
activity
,
android
.
Manifest
.
permission
.
READ_EXTERNAL_STORAGE
)
!=
PackageManager
.
PERMISSION_GRANTED
)
{
// 如果没有权限,请求权限
ActivityCompat
.
requestPermissions
(
activity
,
new
String
[]{
Manifest
.
permission
.
READ_EXTERNAL_STORAGE
},
requestCode
);
}
else
{
// 已经有权限,可以继续处理逻辑
toSystemPhoto
(
activity
,
requestCode
);
}
}
}
/**
* 打开系统图片选择器(使用 ACTION_GET_CONTENT,无需存储权限)
*
* @param activity 当前 Activity
* @param requestCode 请求码,用于 onActivityResult 回调
*/
public
static
void
toSystemPhoto
(
Activity
activity
,
int
requestCode
)
{
Intent
intent
=
new
Intent
(
Intent
.
ACTION_PICK
,
android
.
provider
.
MediaStore
.
Images
.
Media
.
EXTERNAL_CONTENT_URI
);
Intent
intent
=
new
Intent
(
Intent
.
ACTION_GET_CONTENT
);
intent
.
setType
(
"image/*"
);
intent
.
addCategory
(
Intent
.
CATEGORY_OPENABLE
);
activity
.
startActivityForResult
(
intent
,
requestCode
);
}
...
...
app/src/main/java/com/ads/cal/picturetranslate/activity/CameraActivity.java
View file @
bc14c88d
...
...
@@ -83,18 +83,13 @@ import java.io.File;
selectPhone
.
setOnClickListener
(
new
View
.
OnClickListener
()
{
@Override
public
void
onClick
(
View
v
)
{
PermissionUtil
.
checkSelfIMAGEPermission
(
CameraActivity
.
this
,
SELECT_TAKE_PHONE
);
PermissionUtil
.
toSystemPhoto
(
CameraActivity
.
this
,
SELECT_TAKE_PHONE
);
}
});
}
private
void
initData
()
{
Uri
firstImageUri
=
Util
.
getFirstImageUriFromGallery
(
this
);
if
(
firstImageUri
==
null
)
{
return
;
}
selectPhone
.
setImageURI
(
firstImageUri
);
// 已移除 READ_MEDIA_IMAGES 权限,不再查询 MediaStore 获取相册缩略图
}
private
void
initCamera
()
{
...
...
@@ -162,21 +157,7 @@ import java.io.File;
}
@Override
public
void
onRequestPermissionsResult
(
int
requestCode
,
@NonNull
String
[]
permissions
,
@NonNull
int
[]
grantResults
)
{
super
.
onRequestPermissionsResult
(
requestCode
,
permissions
,
grantResults
);
if
(
requestCode
==
SELECT_TAKE_PHONE
)
{
if
(
allPermissionsGranted
(
grantResults
))
{
PermissionUtil
.
toSystemPhoto
(
this
,
SELECT_TAKE_PHONE
);
}
else
{
Toast
.
makeText
(
this
,
getString
(
R
.
string
.
app_toast_enable_permissions
),
Toast
.
LENGTH_SHORT
).
show
();
}
}
}
private
boolean
allPermissionsGranted
(
int
[]
grantResults
)
{
return
grantResults
.
length
>
0
&&
grantResults
[
0
]
==
PackageManager
.
PERMISSION_GRANTED
;
}
/**
* 获取图片回调
...
...
app/src/main/java/com/ads/cal/picturetranslate/activity/PictureTranslateCutOutPhotoActivity.java
View file @
bc14c88d
...
...
@@ -117,7 +117,7 @@ public class PictureTranslateCutOutPhotoActivity extends BaseActivity {
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
cropImageView
.
setImageBitmap
(
bitmap
,
exif
);
cropImageView
.
setImageBitmap
(
bitmap
);
}
}
...
...
app/src/main/java/com/ads/cal/picturetranslate/activity/PictureTranslateListMainActivity.java
View file @
bc14c88d
...
...
@@ -288,7 +288,7 @@ public class PictureTranslateListMainActivity extends BaseActivity implements Ac
@Override
protected
void
onStop
()
{
if
(!
isFinished
)
{
if
(!
isFinished
&&
messenger
!=
null
)
{
forceStart
=
true
;
finish
();
}
...
...
@@ -641,11 +641,7 @@ public class PictureTranslateListMainActivity extends BaseActivity implements Ac
Toast
.
makeText
(
this
,
getString
(
R
.
string
.
app_toast_enable_permissions
),
Toast
.
LENGTH_SHORT
).
show
();
}
}
else
if
(
requestCode
==
PICK_IMAGE_REQUEST
)
{
if
(
allPermissionsGranted
(
grantResults
))
{
PermissionUtil
.
toSystemPhoto
(
this
,
PICK_IMAGE_REQUEST
);
}
else
{
Toast
.
makeText
(
this
,
getString
(
R
.
string
.
app_toast_enable_permissions
),
Toast
.
LENGTH_SHORT
).
show
();
}
// Photo Picker 模式不再需要权限检查
}
}
...
...
@@ -658,7 +654,7 @@ public class PictureTranslateListMainActivity extends BaseActivity implements Ac
take_photo
.
setOnClickListener
(
v
->
checkSelfPermission
());
selectImg
=
findViewById
(
R
.
id
.
select_
);
selectImg
.
setOnClickListener
(
v
->
{
PermissionUtil
.
checkSelfIMAGEPermission
(
PictureTranslateListMainActivity
.
this
,
PICK_IMAGE_REQUEST
);
PermissionUtil
.
toSystemPhoto
(
PictureTranslateListMainActivity
.
this
,
PICK_IMAGE_REQUEST
);
});
recyclerView
=
findViewById
(
R
.
id
.
listData
);
LinearLayoutManager
layoutManager
=
new
LinearLayoutManager
(
this
,
RecyclerView
.
VERTICAL
,
false
);
...
...
app/src/main/java/com/ads/cal/picturetranslate/activity/PictureTranslateShowPhotoActivity.java
View file @
bc14c88d
...
...
@@ -296,6 +296,7 @@ public class PictureTranslateShowPhotoActivity extends BaseActivity {
public
static
void
startPictureTranslateShowPhotoActivity
(
Context
context
,
Uri
uri
)
{
Intent
intent
=
new
Intent
(
context
,
PictureTranslateShowPhotoActivity
.
class
);
intent
.
putExtra
(
"uri"
,
uri
);
intent
.
addFlags
(
Intent
.
FLAG_GRANT_READ_URI_PERMISSION
);
context
.
startActivity
(
intent
);
}
}
app/src/main/java/com/gem/media/ad/InterstitialAdManager.java
View file @
bc14c88d
...
...
@@ -249,9 +249,7 @@ public class InterstitialAdManager {
// }
// }
}
if
(!
TextUtils
.
isEmpty
(
sAdId
))
{
TUInterstitial
.
entryAdScenario
(
sAdId
,
"f65bf35b235ce0"
);
}
if
(
null
!=
mInterstitialAd
&&
mInterstitialAd
.
isAdReady
())
{
mInterstitialAd
.
show
(
activity
,
"f65bf35b235ce0"
);
}
...
...
app/src/main/java/com/gem/media/ad/InterstitialHalfAdManager.java
View file @
bc14c88d
...
...
@@ -223,9 +223,7 @@ public class InterstitialHalfAdManager {
if
(
activity
.
isFinishing
()
||
activity
.
isDestroyed
())
{
return
;
}
if
(!
TextUtils
.
isEmpty
(
sAdId
))
{
TUInterstitial
.
entryAdScenario
(
sAdId
,
"f65bf35b235ce0"
);
}
if
(
null
!=
mInterstitialAd
&&
mInterstitialAd
.
isAdReady
())
{
mInterstitialAd
.
show
(
activity
,
"f65bf35b235ce0"
);
}
...
...
app/src/main/java/com/gem/media/ad/OpenAdManager.java
View file @
bc14c88d
...
...
@@ -265,9 +265,7 @@ public class OpenAdManager {
return
;
}
}
if
(!
TextUtils
.
isEmpty
(
sAdId
))
{
TUSplashAd
.
entryAdScenario
(
sAdId
,
"f65bf35e68ddf9"
);
}
if
(
null
!=
splashAd
&&
splashAd
.
isAdReady
())
{
splashAd
.
show
(
activity
,
viewGroup
,
"f65bf35e68ddf9"
);
}
...
...
app/src/main/res/layout/activity_camera.xml
View file @
bc14c88d
...
...
@@ -26,6 +26,7 @@
android:layout_marginEnd=
"51dp"
android:background=
"@drawable/app_white_corner_4"
android:padding=
"2dp"
android:src=
"@mipmap/app_icon_photo"
android:scaleType=
"centerCrop"
app:layout_constraintBottom_toBottomOf=
"@+id/take_photo"
app:layout_constraintEnd_toStartOf=
"@+id/take_photo"
...
...
build.gradle
View file @
bc14c88d
...
...
@@ -6,16 +6,14 @@ buildscript {
}
dependencies
{
classpath
'com.android.tools.build:gradle:
7.4
.2'
classpath
'com.android.tools.build:gradle:
8.5
.2'
classpath
'org.jetbrains.kotlin:kotlin-gradle-plugin:1.7.20'
classpath
"cn.kw.lib.plugin:sep-plugin:2.4.7"
}
}
plugins
{
id
'com.android.application'
version
'8.
1.1
'
apply
false
id
'com.android.library'
version
'8.
1.1
'
apply
false
id
'com.android.application'
version
'8.
0.2
'
apply
false
id
'com.android.library'
version
'8.
0.2
'
apply
false
}
task
clean
(
type:
Delete
)
{
...
...
gradle/wrapper/gradle-wrapper.properties
View file @
bc14c88d
#Fri Sep 22 15:53:39 CST 2023
distributionBase
=
GRADLE_USER_HOME
distributionPath
=
wrapper/dists
distributionUrl
=
https
\:
//services.gradle.org/distributions/gradle-8.
4
-bin.zip
distributionUrl
=
https
\:
//services.gradle.org/distributions/gradle-8.
7
-bin.zip
zipStoreBase
=
GRADLE_USER_HOME
zipStorePath
=
wrapper/dists
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