V1.0.7(8) 增加埋点和LogActivity
This commit is contained in:
parent
1ba04def83
commit
addd93c8a5
@ -14,11 +14,11 @@ android {
|
|||||||
|
|
||||||
//com.funny.sounds.hd
|
//com.funny.sounds.hd
|
||||||
defaultConfig {
|
defaultConfig {
|
||||||
applicationId = "com.funny.sounds.hd.test"
|
applicationId = "com.funny.sounds.hd"
|
||||||
minSdk = 23
|
minSdk = 23
|
||||||
targetSdk = 34
|
targetSdk = 34
|
||||||
versionCode = 7
|
versionCode = 8
|
||||||
versionName = "1.6"
|
versionName = "1.0.7"
|
||||||
setProperty("archivesBaseName", "Funny Sounds_v" + versionName + "(${versionCode})_$timestamp")
|
setProperty("archivesBaseName", "Funny Sounds_v" + versionName + "(${versionCode})_$timestamp")
|
||||||
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
||||||
}
|
}
|
||||||
@ -73,7 +73,7 @@ dependencies {
|
|||||||
implementation("com.google.firebase:firebase-analytics-ktx")
|
implementation("com.google.firebase:firebase-analytics-ktx")
|
||||||
implementation("com.google.firebase:firebase-crashlytics-ktx")
|
implementation("com.google.firebase:firebase-crashlytics-ktx")
|
||||||
|
|
||||||
//-----------------------------TopOn 聚合(mintegral、unityads、liftoff(vungle)、Bigo)
|
//-----------------------------------------------TopOn(pangle、IronSource、mintegral、unityads、liftoff(vungle)、Bigo)
|
||||||
//Anythink (Necessary)
|
//Anythink (Necessary)
|
||||||
implementation("com.anythink.sdk:core-tpn:6.3.68")
|
implementation("com.anythink.sdk:core-tpn:6.3.68")
|
||||||
implementation("com.anythink.sdk:nativead-tpn:6.3.68")
|
implementation("com.anythink.sdk:nativead-tpn:6.3.68")
|
||||||
@ -96,10 +96,22 @@ dependencies {
|
|||||||
implementation("com.anythink.sdk:adapter-tpn-unityads:6.3.68")
|
implementation("com.anythink.sdk:adapter-tpn-unityads:6.3.68")
|
||||||
implementation("com.unity3d.ads:unity-ads:4.9.3")
|
implementation("com.unity3d.ads:unity-ads:4.9.3")
|
||||||
|
|
||||||
|
//Ironsource
|
||||||
|
implementation("com.anythink.sdk:adapter-tpn-ironsource:6.3.68")
|
||||||
|
implementation("com.ironsource.sdk:mediationsdk:8.1.0")
|
||||||
|
implementation("com.google.android.gms:play-services-appset:16.0.2")
|
||||||
|
implementation("com.google.android.gms:play-services-ads-identifier:18.0.1")
|
||||||
|
implementation("com.google.android.gms:play-services-basement:18.1.0")
|
||||||
|
|
||||||
//Bigo
|
//Bigo
|
||||||
implementation("com.anythink.sdk:adapter-tpn-bigo:6.3.68")
|
implementation("com.anythink.sdk:adapter-tpn-bigo:6.3.68")
|
||||||
implementation("com.bigossp:bigo-ads:4.7.4")
|
implementation("com.bigossp:bigo-ads:4.7.4")
|
||||||
|
|
||||||
|
//Pangle
|
||||||
|
implementation("com.anythink.sdk:adapter-tpn-pangle-nonchina:6.3.68.1")
|
||||||
|
implementation( "com.pangle.global:ads-sdk:6.0.0.3")
|
||||||
|
implementation( "com.google.android.gms:play-services-ads-identifier:18.0.1")
|
||||||
|
|
||||||
//Mintegral
|
//Mintegral
|
||||||
implementation("com.anythink.sdk:adapter-tpn-mintegral-nonchina:6.3.68")
|
implementation("com.anythink.sdk:adapter-tpn-mintegral-nonchina:6.3.68")
|
||||||
implementation("com.mbridge.msdk.oversea:reward:16.7.51")
|
implementation("com.mbridge.msdk.oversea:reward:16.7.51")
|
||||||
@ -113,11 +125,11 @@ dependencies {
|
|||||||
|
|
||||||
//Tramini
|
//Tramini
|
||||||
// implementation("com.anythink.sdk:tramini-plugin-tpn:6.3.68")
|
// implementation("com.anythink.sdk:tramini-plugin-tpn:6.3.68")
|
||||||
//-----------------------------TopOn 聚合
|
|
||||||
|
|
||||||
|
|
||||||
// Debugger UI Tools
|
// Debugger UI Tools
|
||||||
implementation ("com.anythink.sdk:debugger-ui:1.0.7")
|
// implementation ("com.anythink.sdk:debugger-ui:1.0.7")
|
||||||
|
|
||||||
|
//----------------------------------------------TopOn
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -9,7 +9,7 @@
|
|||||||
"client_info": {
|
"client_info": {
|
||||||
"mobilesdk_app_id": "1:15060781613:android:cae5beb7e5d3e8946586a4",
|
"mobilesdk_app_id": "1:15060781613:android:cae5beb7e5d3e8946586a4",
|
||||||
"android_client_info": {
|
"android_client_info": {
|
||||||
"package_name": "com.funny.sounds.hd.test"
|
"package_name": "com.funny.sounds.hd"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"oauth_client": [],
|
"oauth_client": [],
|
||||||
|
|||||||
66
app/proguard-rules.pro
vendored
66
app/proguard-rules.pro
vendored
@ -19,44 +19,30 @@
|
|||||||
# If you keep the line number information, uncomment this to
|
# If you keep the line number information, uncomment this to
|
||||||
# hide the original source file name.
|
# hide the original source file name.
|
||||||
#-renamesourcefileattribute SourceFile
|
#-renamesourcefileattribute SourceFile
|
||||||
-keep class com.omicronapplications.** { *; }
|
# 保持 Room 的核心类不被混淆
|
||||||
-keep class net.sf.sevenzipjbinding.** { *; }
|
-keep class androidx.room.** { *; }
|
||||||
-keep class com.google.gson.reflect.TypeToken { *; }
|
-keep class androidx.sqlite.db.** { *; }
|
||||||
-keep class * extends com.google.gson.reflect.TypeToken
|
|
||||||
|
|
||||||
-keep class com.example.funnysounds.data.MyData { *; }
|
# 保持 Room 数据库类的基本结构
|
||||||
-keep class com.example.funnysounds.data.CategoryList { *; }
|
-keep class * extends androidx.room.RoomDatabase { *; }
|
||||||
-keepattributes Signature
|
|
||||||
-keepattributes *Annotation*
|
|
||||||
-keep class com.mbridge.** {*; }
|
|
||||||
-keep interface com.mbridge.** {*; }
|
|
||||||
-dontwarn com.mbridge.**
|
|
||||||
-keepclassmembers class **.R$* { public static final int mbridge*; }
|
|
||||||
|
|
||||||
-keep public class com.mbridge.* extends androidx.** { *; }
|
# 保持 Room DAO 接口
|
||||||
-keep public class androidx.viewpager.widget.PagerAdapter{*;}
|
-keep @androidx.room.Dao interface * { *; }
|
||||||
-keep interface androidx.annotation.IntDef{*;}
|
-keep @androidx.room.Dao class * { *; }
|
||||||
-keep interface androidx.annotation.Nullable{*;}
|
|
||||||
-keep interface androidx.annotation.CheckResult{*;}
|
|
||||||
-keep interface androidx.annotation.NonNull{*;}
|
|
||||||
-keep public class androidx.fragment.app.Fragment{*;}
|
|
||||||
-keep public class androidx.core.content.FileProvider{*;}
|
|
||||||
-keep public class androidx.core.app.NotificationCompat{*;}
|
|
||||||
-keep public class androidx.appcompat.widget.AppCompatImageView {*;}
|
|
||||||
-keep public class androidx.recyclerview.*{*;}
|
|
||||||
-keep class com.mbridge.msdk.foundation.tools.FastKV{*;}
|
|
||||||
-keep class com.mbridge.msdk.foundation.tools.FastKV$Builder{*;}
|
|
||||||
|
|
||||||
#---------------------------------TopOn 聚合
|
# 保持 Room 实体类
|
||||||
|
-keep @androidx.room.Entity class * { *; }
|
||||||
|
|
||||||
|
# 保持 Room 的注解类
|
||||||
|
-keep @androidx.room.Database class * { *; }
|
||||||
|
|
||||||
|
#---------------------------------------------Topon
|
||||||
# Vungle
|
# Vungle
|
||||||
-dontwarn com.vungle.ads.**
|
-dontwarn com.vungle.ads.**
|
||||||
-keepclassmembers class com.vungle.ads.** {
|
-keepclassmembers class com.vungle.ads.** {
|
||||||
*;
|
*;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Google
|
# Google
|
||||||
-keep class com.google.android.gms.** { *; }
|
-keep class com.google.android.gms.** { *; }
|
||||||
-dontwarn com.google.android.gms.**
|
-dontwarn com.google.android.gms.**
|
||||||
@ -100,6 +86,24 @@
|
|||||||
|
|
||||||
|
|
||||||
# END Protobuf
|
# END Protobuf
|
||||||
|
-keepclassmembers class com.ironsource.sdk.controller.IronSourceWebView$JSInterface {
|
||||||
|
public *;
|
||||||
|
}
|
||||||
|
-keepclassmembers class * implements android.os.Parcelable {
|
||||||
|
public static final android.os.Parcelable$Creator *;
|
||||||
|
}
|
||||||
|
-keep public class com.google.android.gms.ads.** {
|
||||||
|
public *;
|
||||||
|
}
|
||||||
|
-keep class com.ironsource.adapters.** { *;
|
||||||
|
}
|
||||||
|
-dontwarn com.ironsource.mediationsdk.**
|
||||||
|
-dontwarn com.ironsource.adapters.**
|
||||||
|
-keepattributes JavascriptInterface
|
||||||
|
-keepclassmembers class * {
|
||||||
|
@android.webkit.JavascriptInterface <methods>;
|
||||||
|
}
|
||||||
|
-keep class com.bytedance.sdk.** { *; }
|
||||||
-keepattributes Signature
|
-keepattributes Signature
|
||||||
-keepattributes *Annotation*
|
-keepattributes *Annotation*
|
||||||
-keep class com.mbridge.** {*; }
|
-keep class com.mbridge.** {*; }
|
||||||
@ -109,6 +113,7 @@
|
|||||||
-keep class **.R$* { public static final int mbridge*; }
|
-keep class **.R$* { public static final int mbridge*; }
|
||||||
-keep public class com.mbridge.* extends androidx.** { *; }
|
-keep public class com.mbridge.* extends androidx.** { *; }
|
||||||
-keep public class androidx.viewpager.widget.PagerAdapter{ *; }
|
-keep public class androidx.viewpager.widget.PagerAdapter{ *; }
|
||||||
|
-keep public class androidx.viewpager.widget.ViewPager.OnPageChangeListener{ *; }
|
||||||
-keep interface androidx.annotation.IntDef{ *; }
|
-keep interface androidx.annotation.IntDef{ *; }
|
||||||
-keep interface androidx.annotation.Nullable{ *; }
|
-keep interface androidx.annotation.Nullable{ *; }
|
||||||
-keep interface androidx.annotation.CheckResult{ *; }
|
-keep interface androidx.annotation.CheckResult{ *; }
|
||||||
@ -118,6 +123,5 @@
|
|||||||
-keep public class androidx.core.app.NotificationCompat{ *; }
|
-keep public class androidx.core.app.NotificationCompat{ *; }
|
||||||
-keep public class androidx.appcompat.widget.AppCompatImageView { *; }
|
-keep public class androidx.appcompat.widget.AppCompatImageView { *; }
|
||||||
-keep public class androidx.recyclerview.*{ *; }
|
-keep public class androidx.recyclerview.*{ *; }
|
||||||
|
#---------------------------------------------Topon
|
||||||
#---------------------------------TopOn 聚合
|
|
||||||
|
|
||||||
|
|||||||
@ -38,6 +38,9 @@
|
|||||||
<activity
|
<activity
|
||||||
android:name=".activity.WebActivity"
|
android:name=".activity.WebActivity"
|
||||||
android:exported="false" />
|
android:exported="false" />
|
||||||
|
<activity
|
||||||
|
android:name=".activity.MainActivity"
|
||||||
|
android:exported="false" />
|
||||||
<activity
|
<activity
|
||||||
android:name=".activity.IntoActivity"
|
android:name=".activity.IntoActivity"
|
||||||
android:exported="true">
|
android:exported="true">
|
||||||
@ -48,7 +51,7 @@
|
|||||||
</intent-filter>
|
</intent-filter>
|
||||||
</activity>
|
</activity>
|
||||||
<activity
|
<activity
|
||||||
android:name=".activity.MainActivity"
|
android:name=".activity.LogActivity"
|
||||||
android:exported="false" />
|
android:exported="false" />
|
||||||
</application>
|
</application>
|
||||||
|
|
||||||
|
|||||||
Binary file not shown.
@ -1,6 +1,7 @@
|
|||||||
package com.example.funnysounds.activity;
|
package com.example.funnysounds.activity;
|
||||||
|
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
|
import android.content.IntentFilter;
|
||||||
import android.database.ContentObserver;
|
import android.database.ContentObserver;
|
||||||
import android.graphics.drawable.Drawable;
|
import android.graphics.drawable.Drawable;
|
||||||
import android.media.AudioManager;
|
import android.media.AudioManager;
|
||||||
@ -14,6 +15,7 @@ import android.view.View;
|
|||||||
import android.widget.Button;
|
import android.widget.Button;
|
||||||
import android.widget.ImageView;
|
import android.widget.ImageView;
|
||||||
import android.widget.ProgressBar;
|
import android.widget.ProgressBar;
|
||||||
|
import android.widget.RelativeLayout;
|
||||||
import android.widget.SeekBar;
|
import android.widget.SeekBar;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
@ -47,7 +49,7 @@ public class DetailActivity extends AppCompatActivity {
|
|||||||
private TextView textView;
|
private TextView textView;
|
||||||
private ImageView imageView, imageView2;
|
private ImageView imageView, imageView2;
|
||||||
private MediaPlayer mediaPlayer;
|
private MediaPlayer mediaPlayer;
|
||||||
protected Button btn_play_pause;
|
protected ImageView btn_play_pause;
|
||||||
private boolean play = false;
|
private boolean play = false;
|
||||||
private SeekBar volumeSeekbar;
|
private SeekBar volumeSeekbar;
|
||||||
private ImageView imLoop, imAddLove;
|
private ImageView imLoop, imAddLove;
|
||||||
@ -58,6 +60,22 @@ public class DetailActivity extends AppCompatActivity {
|
|||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
setContentView(R.layout.activity_detail);
|
setContentView(R.layout.activity_detail);
|
||||||
|
RelativeLayout loadingAd = findViewById(R.id.loading_ad);
|
||||||
|
AdManager.loadAllAd();
|
||||||
|
StaticValue.enterDetailCount++;
|
||||||
|
|
||||||
|
if (StaticValue.enterDetailCount % 2 != 0) {
|
||||||
|
loadingAd.setVisibility(View.VISIBLE);
|
||||||
|
AdManager.showTopOn(DetailActivity.this, new onActionListener() {
|
||||||
|
@Override
|
||||||
|
public void onAction() {
|
||||||
|
loadingAd.setVisibility(View.GONE);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}else {
|
||||||
|
loadingAd.setVisibility(View.GONE);
|
||||||
|
}
|
||||||
|
|
||||||
textView = findViewById(R.id.data_name);
|
textView = findViewById(R.id.data_name);
|
||||||
imageView = findViewById(R.id.data_image);
|
imageView = findViewById(R.id.data_image);
|
||||||
imageView2 = findViewById(R.id.imageview_back);
|
imageView2 = findViewById(R.id.imageview_back);
|
||||||
@ -88,8 +106,9 @@ public class DetailActivity extends AppCompatActivity {
|
|||||||
@Override
|
@Override
|
||||||
public void onChange(boolean selfChange) {
|
public void onChange(boolean selfChange) {
|
||||||
super.onChange(selfChange);
|
super.onChange(selfChange);
|
||||||
int maxVolume = audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
|
int curVolume = audioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
|
||||||
seekBar.setMax(maxVolume);
|
Log.d(Sounds.TAG,"---------onChange selfChange="+selfChange);
|
||||||
|
seekBar.setProgress(curVolume);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
|
seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
|
||||||
@ -114,7 +133,7 @@ public class DetailActivity extends AppCompatActivity {
|
|||||||
|
|
||||||
textView.setText(resource.getTitle());
|
textView.setText(resource.getTitle());
|
||||||
media = resource.getMp3Url();
|
media = resource.getMp3Url();
|
||||||
Log.d("----", "---media" + media);
|
|
||||||
MyRoom.getInstance().getDataDao().queryAudioIsLove(resource.getId()).observe(this, new Observer<MyData>() {
|
MyRoom.getInstance().getDataDao().queryAudioIsLove(resource.getId()).observe(this, new Observer<MyData>() {
|
||||||
@Override
|
@Override
|
||||||
public void onChanged(MyData myData) {
|
public void onChanged(MyData myData) {
|
||||||
@ -153,7 +172,7 @@ public class DetailActivity extends AppCompatActivity {
|
|||||||
mediaPlayer.setDataSource(this, parse);
|
mediaPlayer.setDataSource(this, parse);
|
||||||
|
|
||||||
}
|
}
|
||||||
mediaPlayer.prepare();
|
mediaPlayer.prepareAsync();
|
||||||
mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
|
mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onPrepared(MediaPlayer mp) {
|
public void onPrepared(MediaPlayer mp) {
|
||||||
@ -164,6 +183,7 @@ public class DetailActivity extends AppCompatActivity {
|
|||||||
mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
|
mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onCompletion(MediaPlayer mp) {
|
public void onCompletion(MediaPlayer mp) {
|
||||||
|
Log.d(Sounds.TAG, "--onCompletion-false");
|
||||||
btn_play_pause.setSelected(false);
|
btn_play_pause.setSelected(false);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -213,18 +233,14 @@ public class DetailActivity extends AppCompatActivity {
|
|||||||
public void onClick(View v) {
|
public void onClick(View v) {
|
||||||
btn_play_pause.setSelected(!btn_play_pause.isSelected());
|
btn_play_pause.setSelected(!btn_play_pause.isSelected());
|
||||||
if (btn_play_pause.isSelected()) {
|
if (btn_play_pause.isSelected()) {
|
||||||
AdManager.showTopOn(DetailActivity.this, new onActionListener() {
|
Log.d(Sounds.TAG, "---true");
|
||||||
@Override
|
|
||||||
public void onAction() {
|
|
||||||
if (mediaPlayer != null && !mediaPlayer.isPlaying()) {
|
if (mediaPlayer != null && !mediaPlayer.isPlaying()) {
|
||||||
mediaPlayer.start();
|
mediaPlayer.start();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
|
||||||
});
|
|
||||||
} else {
|
} else {
|
||||||
|
Log.d(Sounds.TAG, "---false");
|
||||||
if (mediaPlayer != null && mediaPlayer.isPlaying()) {
|
if (mediaPlayer != null && mediaPlayer.isPlaying()) {
|
||||||
mediaPlayer.stop();
|
mediaPlayer.pause();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3,13 +3,11 @@ package com.example.funnysounds.activity;
|
|||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.CountDownTimer;
|
import android.os.CountDownTimer;
|
||||||
import android.util.Log;
|
|
||||||
import android.widget.ProgressBar;
|
import android.widget.ProgressBar;
|
||||||
|
|
||||||
import androidx.appcompat.app.AppCompatActivity;
|
import androidx.appcompat.app.AppCompatActivity;
|
||||||
|
|
||||||
import com.example.funnysounds.R;
|
import com.example.funnysounds.R;
|
||||||
import com.example.funnysounds.resolve.Sounds;
|
|
||||||
import com.example.funnysounds.topon.CountAction;
|
import com.example.funnysounds.topon.CountAction;
|
||||||
import com.example.funnysounds.topon.GoMainAction;
|
import com.example.funnysounds.topon.GoMainAction;
|
||||||
import com.example.funnysounds.topon.AdManager;
|
import com.example.funnysounds.topon.AdManager;
|
||||||
@ -18,8 +16,9 @@ public class IntoActivity extends AppCompatActivity {
|
|||||||
|
|
||||||
|
|
||||||
protected CountDownTimer countDownTimer;
|
protected CountDownTimer countDownTimer;
|
||||||
private long tim = 1000L;
|
private long tim = 12000L;
|
||||||
private ProgressBar progressBar;
|
private ProgressBar progressBar;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
@ -32,6 +31,12 @@ public class IntoActivity extends AppCompatActivity {
|
|||||||
float l1 = (float) millisUntilFinished / tim;
|
float l1 = (float) millisUntilFinished / tim;
|
||||||
float v = 100 - l1 * 100;
|
float v = 100 - l1 * 100;
|
||||||
progressBar.setProgress((int) v);
|
progressBar.setProgress((int) v);
|
||||||
|
if (AdManager.place1LoadFail && AdManager.place2LoadFail && AdManager.place3LoadFail) {
|
||||||
|
if (countDownTimer != null) {
|
||||||
|
countDownTimer.cancel();
|
||||||
|
}
|
||||||
|
startMainActivity();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}, new GoMainAction() {
|
}, new GoMainAction() {
|
||||||
@Override
|
@Override
|
||||||
@ -43,8 +48,6 @@ public class IntoActivity extends AppCompatActivity {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private void startMainActivity() {
|
private void startMainActivity() {
|
||||||
progressBar.setProgress(100);
|
progressBar.setProgress(100);
|
||||||
Intent intent = new Intent(this, MainActivity.class);
|
Intent intent = new Intent(this, MainActivity.class);
|
||||||
|
|||||||
@ -0,0 +1,381 @@
|
|||||||
|
package com.example.funnysounds.activity
|
||||||
|
|
||||||
|
import android.annotation.SuppressLint
|
||||||
|
import android.app.Activity
|
||||||
|
import android.app.ActivityManager
|
||||||
|
import android.content.pm.PackageInfo
|
||||||
|
import android.content.pm.PackageManager
|
||||||
|
import android.graphics.Point
|
||||||
|
import android.hardware.Sensor
|
||||||
|
import android.hardware.SensorManager
|
||||||
|
import android.os.Build
|
||||||
|
import android.os.Bundle
|
||||||
|
import android.os.StrictMode
|
||||||
|
import android.os.SystemClock
|
||||||
|
import android.telephony.TelephonyManager
|
||||||
|
import android.text.TextUtils
|
||||||
|
import android.util.Log
|
||||||
|
import android.view.WindowManager
|
||||||
|
import android.webkit.WebView
|
||||||
|
import androidx.appcompat.app.AppCompatActivity
|
||||||
|
import com.example.funnysounds.databinding.LayoutLogBinding
|
||||||
|
import org.json.JSONArray
|
||||||
|
import org.json.JSONObject
|
||||||
|
import java.io.File
|
||||||
|
import java.text.SimpleDateFormat
|
||||||
|
import java.util.Arrays
|
||||||
|
import java.util.Date
|
||||||
|
import java.util.Locale
|
||||||
|
import java.util.TimeZone
|
||||||
|
import kotlin.math.pow
|
||||||
|
import kotlin.math.sqrt
|
||||||
|
|
||||||
|
|
||||||
|
@SuppressLint("WrongConstant")
|
||||||
|
class LogActivity : AppCompatActivity() {
|
||||||
|
|
||||||
|
private lateinit var binding: LayoutLogBinding
|
||||||
|
|
||||||
|
@SuppressLint("SetJavaScriptEnabled")
|
||||||
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
|
super.onCreate(savedInstanceState)
|
||||||
|
binding = LayoutLogBinding.inflate(layoutInflater)
|
||||||
|
setContentView(binding.root)
|
||||||
|
val json = getJson()
|
||||||
|
|
||||||
|
binding.log.text = json.toString(2)
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun getJson(): JSONObject {
|
||||||
|
val jSONObject = JSONObject()
|
||||||
|
|
||||||
|
val info = getWebViewPackageInfo(this)
|
||||||
|
val versionCode = info?.versionCode
|
||||||
|
val versionName = info?.versionName
|
||||||
|
val packageName = info?.packageName
|
||||||
|
val glEsVersion = glEsVersion()
|
||||||
|
|
||||||
|
jSONObject.put("当前手机时间", convertTimestampToDate(System.currentTimeMillis()))
|
||||||
|
jSONObject.put("WebView versionCode", versionCode)
|
||||||
|
jSONObject.put("WebView versionName", versionName)
|
||||||
|
jSONObject.put("WebView packageName", packageName)
|
||||||
|
jSONObject.put("OpenGL ES", glEsVersion)
|
||||||
|
jSONObject.put("当前app的版本", "此后对应线上的版本")
|
||||||
|
jSONObject.put("sdk_version", "前使用的广告 SDK 的版本号")
|
||||||
|
jSONObject.put("first_install", "是否是第一次安装应用")
|
||||||
|
jSONObject.put("Android版本的API级别(api_level)", Build.VERSION.SDK_INT)
|
||||||
|
jSONObject.put("设备的制造商名称(brand)", Build.MANUFACTURER)
|
||||||
|
jSONObject.put("制造商的品牌名称(brand_name)", Build.BRAND)
|
||||||
|
jSONObject.put("设备的硬件名称(hardware)", Build.HARDWARE)
|
||||||
|
jSONObject.put("唯一标识此构建的字符串(fingerprint)", Build.FINGERPRINT)
|
||||||
|
jSONObject.put("检测设备是否为模拟器(sim)", isEmulator())
|
||||||
|
jSONObject.put("aida", "判断是否<AdvertisingIdClient>")
|
||||||
|
jSONObject.put("当前设备的默认区域设置(locale)", Locale.getDefault().toString())
|
||||||
|
jSONObject.put("设备的具体型号(model)", Build.MODEL)
|
||||||
|
jSONObject.put("设备当前操作系统的版本号(os)", Build.VERSION.RELEASE)
|
||||||
|
jSONObject.put(
|
||||||
|
"判断设备是否是 Amazon 的 Fire OS 系统或 Fire TV (platform)",
|
||||||
|
isFireOS(this)
|
||||||
|
)
|
||||||
|
jSONObject.put("设备的内部代码名(revision)", Build.DEVICE)
|
||||||
|
jSONObject.put("当前时区的偏移量(tz_offset)", tzOffset())
|
||||||
|
jSONObject.put("设备是否配备了特定类型的传感器(gy)", gy())
|
||||||
|
jSONObject.put("设备当前 SIM 卡的国家代码(country_code)", getSimCountryIso(this))
|
||||||
|
jSONObject.put("获取当前设备的移动国家码(MCC)", mcc())
|
||||||
|
jSONObject.put("获取当前设备的移动网络码(MNC)", mnc())
|
||||||
|
jSONObject.put("获取当前设备的运营商名称(carrier)", networkOperatorName())
|
||||||
|
jSONObject.put("获取设备SIM卡状态", getSimState(this))
|
||||||
|
jSONObject.put("is_tablet", "是否为平板")
|
||||||
|
jSONObject.put("是否为电视(tv)", isTv(this))
|
||||||
|
jSONObject.put("可用处理器数量(pc)", Runtime.getRuntime().availableProcessors())
|
||||||
|
jSONObject.put("获取 HDR 屏幕信息(hdr)", isScreenHdr())
|
||||||
|
jSONObject.put("此设备支持的 ABI (supported_abis)", cpu())
|
||||||
|
val displayMetrics = resources.displayMetrics
|
||||||
|
if (displayMetrics != null) {
|
||||||
|
jSONObject.put("屏幕宽度", displayMetrics.widthPixels);
|
||||||
|
jSONObject.put("屏幕高度", displayMetrics.heightPixels);
|
||||||
|
jSONObject.put("存储屏幕密度(adns)", displayMetrics.density)
|
||||||
|
jSONObject.put(
|
||||||
|
"存储屏幕密度 DPI(adnsd)",
|
||||||
|
Integer.valueOf(displayMetrics.densityDpi)
|
||||||
|
)
|
||||||
|
jSONObject.put("存储 X 方向的像素密度(xdpi)", displayMetrics.xdpi)
|
||||||
|
jSONObject.put("存储 Y 方向的像素密度(ydpi)", displayMetrics.ydpi)
|
||||||
|
// 获取屏幕尺寸(宽度和高度)
|
||||||
|
val screenSize = Point().apply {
|
||||||
|
// 获取屏幕宽度和高度
|
||||||
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
|
||||||
|
display?.getRealSize(this)
|
||||||
|
} else {
|
||||||
|
windowManager.defaultDisplay.getRealSize(this)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
val screenWidthInInches = screenSize.x.toDouble() / displayMetrics.xdpi
|
||||||
|
val screenHeightInInches = screenSize.y.toDouble() / displayMetrics.ydpi
|
||||||
|
val screenSizeInInches =
|
||||||
|
sqrt(screenWidthInInches.pow(2.0) + screenHeightInInches.pow(2.0))
|
||||||
|
|
||||||
|
jSONObject.put("屏幕尺寸(screen_size_in)", screenSizeInInches)
|
||||||
|
}
|
||||||
|
jSONObject.put(
|
||||||
|
"当前系统时间与系统启动时间之间的差值(bt_ms)",
|
||||||
|
convertTimestampToDate(System.currentTimeMillis() - SystemClock.elapsedRealtime())
|
||||||
|
)
|
||||||
|
jSONObject.put(
|
||||||
|
"psase",
|
||||||
|
"如何>34 && 不是亚马逊os系统和fire tv && 检查广告服务状态是否启用"
|
||||||
|
)
|
||||||
|
jSONObject.put("process_name", "通过当前进程 ID 查找并返回对应的进程名称")
|
||||||
|
jSONObject.put("is_main_process", "判断当前进程是否为应用的主进程")
|
||||||
|
jSONObject.put("com.android.vending", "获取google商店的versionCode与versionName")
|
||||||
|
val lastModified = File(applicationInfo.sourceDir).lastModified()
|
||||||
|
jSONObject.put(
|
||||||
|
"获取当前安装的应用程序的APK文件的最后修改时间(ia)",
|
||||||
|
convertTimestampToDate(lastModified)
|
||||||
|
)
|
||||||
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
|
||||||
|
jSONObject.put(
|
||||||
|
"安装应用程序的来源(installer_name_info)",
|
||||||
|
"${packageManager.getInstallSourceInfo(applicationInfo.packageName).installingPackageName}"
|
||||||
|
)
|
||||||
|
} else {
|
||||||
|
jSONObject.put(
|
||||||
|
"安装应用程序的来源(installer_name)",
|
||||||
|
"${packageManager.getInstallerPackageName(applicationInfo.packageName)}"
|
||||||
|
)
|
||||||
|
}
|
||||||
|
jSONObject.put("omid 版本", "用于检测广告是否有效曝光及检测广告的可见性")
|
||||||
|
|
||||||
|
Log.d("tang", jSONObject.toString())
|
||||||
|
return jSONObject
|
||||||
|
}
|
||||||
|
|
||||||
|
fun toJSONArray(strArr: Array<String>?): JSONArray? {
|
||||||
|
if (strArr == null) {
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
val jsonArray = JSONArray()
|
||||||
|
for (str in strArr) {
|
||||||
|
jsonArray.put(str)
|
||||||
|
}
|
||||||
|
return jsonArray
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun cpu(): JSONArray? {
|
||||||
|
val array = toJSONArray(Build.SUPPORTED_ABIS)
|
||||||
|
return array
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun isScreenHdr(): Boolean? {
|
||||||
|
return if (Build.VERSION.SDK_INT >= 26) {
|
||||||
|
resources.configuration.isScreenHdr
|
||||||
|
} else {
|
||||||
|
null
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun isTv(context: Activity): Boolean {
|
||||||
|
if (isFireTv(context)) {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
val packageManager: PackageManager = context.packageManager
|
||||||
|
if (Build.VERSION.SDK_INT >= 21) {
|
||||||
|
return packageManager.hasSystemFeature("android.software.leanback")
|
||||||
|
}
|
||||||
|
return packageManager.hasSystemFeature("android.hardware.type.television")
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private fun networkOperatorName(): String {
|
||||||
|
val telephonyManager = getSystemService("phone") as TelephonyManager
|
||||||
|
return try {
|
||||||
|
telephonyManager.networkOperatorName
|
||||||
|
} catch (e: Exception) {
|
||||||
|
""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private fun mnc(): String {
|
||||||
|
val telephonyManager = getSystemService("phone") as TelephonyManager
|
||||||
|
return try {
|
||||||
|
val networkOperator = telephonyManager.networkOperator
|
||||||
|
networkOperator.substring(3.coerceAtMost(networkOperator.length))
|
||||||
|
} catch (e: Exception) {
|
||||||
|
""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun mcc(): String {
|
||||||
|
val telephonyManager = getSystemService("phone") as TelephonyManager
|
||||||
|
return try {
|
||||||
|
val networkOperator = telephonyManager.networkOperator
|
||||||
|
networkOperator.substring(0, minOf(3, networkOperator.length))
|
||||||
|
} catch (e: Exception) {
|
||||||
|
""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun gy(): Boolean {
|
||||||
|
val sensorManager = getSystemService("sensor") as SensorManager
|
||||||
|
return sensorManager.getDefaultSensor(Sensor.TYPE_STEP_DETECTOR) != null
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun tzOffset(): Double {
|
||||||
|
return Math.round(
|
||||||
|
(TimeZone.getDefault().getOffset(Date().getTime()) * 10.0) / 3600000.0
|
||||||
|
) / 10.0
|
||||||
|
}
|
||||||
|
|
||||||
|
fun getOrientation(): Int {
|
||||||
|
return resources.configuration.orientation
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
fun getWebViewPackageInfo(context: Activity): PackageInfo? {
|
||||||
|
val packageManager: PackageManager = context.packageManager
|
||||||
|
|
||||||
|
// 如果系统支持直接获取 WebView 包信息 (Android 7.0 及以上)
|
||||||
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||||
|
return WebView.getCurrentWebViewPackage()
|
||||||
|
}
|
||||||
|
|
||||||
|
// 如果不支持,尝试通过常见的 WebView 包名来获取信息
|
||||||
|
val webviewPackageNames = listOf(
|
||||||
|
"com.google.android.webview",
|
||||||
|
"com.android.webview",
|
||||||
|
"com.android.chrome"
|
||||||
|
)
|
||||||
|
|
||||||
|
for (packageName in webviewPackageNames) {
|
||||||
|
try {
|
||||||
|
val packageInfo = packageManager.getPackageInfo(packageName, 0)
|
||||||
|
if (packageInfo != null) {
|
||||||
|
return packageInfo
|
||||||
|
}
|
||||||
|
} catch (e: PackageManager.NameNotFoundException) {
|
||||||
|
// 忽略异常,继续尝试下一个包名
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 如果都没有找到,返回 null
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
|
||||||
|
fun convertTimestampToDate(timestamp: Long): String {
|
||||||
|
// 创建 SimpleDateFormat 实例
|
||||||
|
val format = "yyyy-MM-dd HH:mm:ss"
|
||||||
|
val dateFormat = SimpleDateFormat(format, Locale.getDefault())
|
||||||
|
dateFormat.timeZone = TimeZone.getTimeZone("GMT") // 设置时区为 UTC,或者根据需要选择其他时区
|
||||||
|
|
||||||
|
// 将时间戳转换为 Date 对象
|
||||||
|
val date = Date(timestamp)
|
||||||
|
|
||||||
|
// 格式化 Date 对象为指定格式的字符串
|
||||||
|
return dateFormat.format(date)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
fun glEsVersion(): String? {
|
||||||
|
val activityManager = this.getSystemService("activity") as ActivityManager
|
||||||
|
return activityManager.deviceConfigurationInfo.glEsVersion
|
||||||
|
}
|
||||||
|
|
||||||
|
fun isFireOS(context: Activity): Boolean {
|
||||||
|
return "amazon".equals(Build.MANUFACTURER, ignoreCase = true) || isFireTv(context)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun isFireTv(context: Activity): Boolean {
|
||||||
|
return context.packageManager.hasSystemFeature("amazon.hardware.fire_tv")
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun getSimCountryIso(context: Activity): String {
|
||||||
|
val telephonyManager = context.getSystemService("phone") as TelephonyManager?
|
||||||
|
return telephonyManager?.simCountryIso?.uppercase(Locale.ENGLISH) ?: ""
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun getSimState(context: Activity): Int {
|
||||||
|
val telephonyManager = context.getSystemService("phone") as TelephonyManager?
|
||||||
|
return telephonyManager?.simState ?: -1
|
||||||
|
}
|
||||||
|
|
||||||
|
private val a = HashMap<Int, Point>(2)
|
||||||
|
|
||||||
|
fun point(context: Activity): Point {
|
||||||
|
val orientation = getOrientation()
|
||||||
|
val map = a
|
||||||
|
|
||||||
|
// Check if the point for the given orientation is already cached
|
||||||
|
if (map.containsKey(orientation)) {
|
||||||
|
return map[orientation]!!
|
||||||
|
}
|
||||||
|
|
||||||
|
// Initialize default point
|
||||||
|
val point = Point()
|
||||||
|
point.x = 480
|
||||||
|
point.y = 320
|
||||||
|
|
||||||
|
val vmPolicy = StrictMode.getVmPolicy()
|
||||||
|
StrictMode.setVmPolicy(StrictMode.VmPolicy.LAX)
|
||||||
|
|
||||||
|
// Get window manager
|
||||||
|
val windowManager = context.getSystemService("window") as? WindowManager
|
||||||
|
|
||||||
|
windowManager?.let {
|
||||||
|
val defaultDisplay = it.defaultDisplay
|
||||||
|
when {
|
||||||
|
Build.VERSION.SDK_INT >= 30 -> {
|
||||||
|
val bounds = it.maximumWindowMetrics.bounds
|
||||||
|
point.set(bounds.width(), bounds.height())
|
||||||
|
}
|
||||||
|
|
||||||
|
else -> {
|
||||||
|
defaultDisplay.getRealSize(point)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Restore the original VM policy
|
||||||
|
StrictMode.setVmPolicy(vmPolicy)
|
||||||
|
|
||||||
|
// Cache the point for the orientation
|
||||||
|
map[orientation] = point
|
||||||
|
|
||||||
|
return point
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
fun isEmulator(): Boolean {
|
||||||
|
return checkText(Build.DEVICE, "goldfish,vbox") || checkText(
|
||||||
|
Build.HARDWARE,
|
||||||
|
"ranchu,generic,vbox"
|
||||||
|
) || checkText(Build.MANUFACTURER, "Genymotion") || checkText(
|
||||||
|
Build.MODEL,
|
||||||
|
"Android SDK built for x86"
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun checkText(str: String, str2: String): Boolean {
|
||||||
|
return startsWithAtLeastOnePrefix(str, explode(str2))
|
||||||
|
}
|
||||||
|
|
||||||
|
fun explode(str: String): List<String> {
|
||||||
|
return explode(str, ",\\s*")
|
||||||
|
}
|
||||||
|
|
||||||
|
fun explode(str: String, str2: String): List<String> {
|
||||||
|
return if (TextUtils.isEmpty(str)) emptyList() else Arrays.asList(
|
||||||
|
*str.split(str2.toRegex()).dropLastWhile { it.isEmpty() }
|
||||||
|
.toTypedArray())
|
||||||
|
}
|
||||||
|
|
||||||
|
fun startsWithAtLeastOnePrefix(str: String, list: List<String?>): Boolean {
|
||||||
|
for (str2 in list) {
|
||||||
|
if (str.startsWith(str2!!)) {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -4,13 +4,12 @@ import android.annotation.SuppressLint;
|
|||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.pm.PackageInfo;
|
import android.content.pm.PackageInfo;
|
||||||
import android.content.pm.PackageManager;
|
import android.content.pm.PackageManager;
|
||||||
import android.net.Uri;
|
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
|
import android.util.Log;
|
||||||
import android.view.Gravity;
|
import android.view.Gravity;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.widget.ImageView;
|
import android.widget.ImageView;
|
||||||
import android.widget.Toast;
|
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.appcompat.app.AppCompatActivity;
|
import androidx.appcompat.app.AppCompatActivity;
|
||||||
@ -24,9 +23,12 @@ import com.example.funnysounds.databinding.ActivityMainBinding;
|
|||||||
import com.example.funnysounds.fragement.CategoryFragment;
|
import com.example.funnysounds.fragement.CategoryFragment;
|
||||||
import com.example.funnysounds.fragement.LoveFragment;
|
import com.example.funnysounds.fragement.LoveFragment;
|
||||||
import com.example.funnysounds.fragement.RecordFragment;
|
import com.example.funnysounds.fragement.RecordFragment;
|
||||||
|
import com.example.funnysounds.resolve.Sounds;
|
||||||
|
import com.example.funnysounds.topon.AdManager;
|
||||||
import com.google.android.material.tabs.TabLayout;
|
import com.google.android.material.tabs.TabLayout;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class MainActivity extends AppCompatActivity {
|
public class MainActivity extends AppCompatActivity {
|
||||||
@ -34,6 +36,11 @@ public class MainActivity extends AppCompatActivity {
|
|||||||
|
|
||||||
private ActivityMainBinding vb;
|
private ActivityMainBinding vb;
|
||||||
|
|
||||||
|
|
||||||
|
private long lastClickTime = 0;
|
||||||
|
private int ContinuousClick = 1;
|
||||||
|
private static final int MIN_CLICK_DELAY_TIME = 1000;
|
||||||
|
|
||||||
@SuppressLint("MissingInflatedId")
|
@SuppressLint("MissingInflatedId")
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
@ -41,6 +48,7 @@ public class MainActivity extends AppCompatActivity {
|
|||||||
vb = ActivityMainBinding.inflate(getLayoutInflater());
|
vb = ActivityMainBinding.inflate(getLayoutInflater());
|
||||||
setContentView(vb.getRoot());
|
setContentView(vb.getRoot());
|
||||||
initTabVp();
|
initTabVp();
|
||||||
|
AdManager.loadAllAd();
|
||||||
vb.imageMenu.setOnClickListener(new View.OnClickListener() {
|
vb.imageMenu.setOnClickListener(new View.OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(View v) {
|
public void onClick(View v) {
|
||||||
@ -62,6 +70,24 @@ public class MainActivity extends AppCompatActivity {
|
|||||||
vb.textVersion.setText(format);
|
vb.textVersion.setText(format);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
vb.version.setOnClickListener(new View.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View v) {
|
||||||
|
long currentTime = System.currentTimeMillis();
|
||||||
|
if (currentTime - lastClickTime < MIN_CLICK_DELAY_TIME) {
|
||||||
|
ContinuousClick++;
|
||||||
|
Log.d(Sounds.TAG, "----------连续点击次数--" + ContinuousClick);
|
||||||
|
if (ContinuousClick == 5) {
|
||||||
|
Intent intent = new Intent(MainActivity.this, LogActivity.class);
|
||||||
|
startActivity(intent);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
ContinuousClick = 1;
|
||||||
|
}
|
||||||
|
lastClickTime = currentTime;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void initTabVp() {
|
private void initTabVp() {
|
||||||
|
|||||||
@ -12,6 +12,7 @@ import android.view.View;
|
|||||||
import com.example.funnysounds.R;
|
import com.example.funnysounds.R;
|
||||||
import com.example.funnysounds.databinding.ActivityRecordAudioBinding;
|
import com.example.funnysounds.databinding.ActivityRecordAudioBinding;
|
||||||
import com.example.funnysounds.resolve.Utils;
|
import com.example.funnysounds.resolve.Utils;
|
||||||
|
import com.example.funnysounds.topon.AdManager;
|
||||||
import com.example.funnysounds.value.StaticValue;
|
import com.example.funnysounds.value.StaticValue;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
@ -30,7 +31,7 @@ public class RecordAudioActivity extends AppCompatActivity {
|
|||||||
vb = ActivityRecordAudioBinding.inflate(getLayoutInflater());
|
vb = ActivityRecordAudioBinding.inflate(getLayoutInflater());
|
||||||
setContentView(vb.getRoot());
|
setContentView(vb.getRoot());
|
||||||
vb.top.imAddLove.setVisibility(View.GONE);
|
vb.top.imAddLove.setVisibility(View.GONE);
|
||||||
|
AdManager.loadAllAd();
|
||||||
vb.top.dataName.setText(getString(R.string.new_record));
|
vb.top.dataName.setText(getString(R.string.new_record));
|
||||||
vb.top.imageviewBack.setOnClickListener((view) -> finish());
|
vb.top.imageviewBack.setOnClickListener((view) -> finish());
|
||||||
initMediaRecorder();
|
initMediaRecorder();
|
||||||
|
|||||||
@ -17,6 +17,7 @@ import com.example.funnysounds.resolve.Readfile;
|
|||||||
import com.example.funnysounds.resolve.Sounds;
|
import com.example.funnysounds.resolve.Sounds;
|
||||||
import com.example.funnysounds.resolve.Utils;
|
import com.example.funnysounds.resolve.Utils;
|
||||||
import com.example.funnysounds.room.MyRoom;
|
import com.example.funnysounds.room.MyRoom;
|
||||||
|
import com.example.funnysounds.topon.AdManager;
|
||||||
import com.example.funnysounds.value.StaticValue;
|
import com.example.funnysounds.value.StaticValue;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
@ -40,7 +41,7 @@ public class SaveRecordActivity extends AppCompatActivity {
|
|||||||
vb.top.imAddLove.setVisibility(View.GONE);
|
vb.top.imAddLove.setVisibility(View.GONE);
|
||||||
vb.top.imageviewBack.setOnClickListener((view) -> finish());
|
vb.top.imageviewBack.setOnClickListener((view) -> finish());
|
||||||
init();
|
init();
|
||||||
|
AdManager.loadAllAd();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void init() {
|
private void init() {
|
||||||
|
|||||||
@ -54,7 +54,7 @@ public class SpecifisoundsActivity extends AppCompatActivity implements MyDataSo
|
|||||||
});
|
});
|
||||||
getData();
|
getData();
|
||||||
setSpecificRecycleView();
|
setSpecificRecycleView();
|
||||||
|
AdManager.loadAllAd();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -8,6 +8,7 @@ import androidx.appcompat.app.AppCompatActivity;
|
|||||||
|
|
||||||
import com.example.funnysounds.R;
|
import com.example.funnysounds.R;
|
||||||
import com.example.funnysounds.databinding.ActivityWebBinding;
|
import com.example.funnysounds.databinding.ActivityWebBinding;
|
||||||
|
import com.example.funnysounds.topon.AdManager;
|
||||||
|
|
||||||
|
|
||||||
public class WebActivity extends AppCompatActivity {
|
public class WebActivity extends AppCompatActivity {
|
||||||
@ -18,6 +19,7 @@ public class WebActivity extends AppCompatActivity {
|
|||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
vb = ActivityWebBinding.inflate(getLayoutInflater());
|
vb = ActivityWebBinding.inflate(getLayoutInflater());
|
||||||
setContentView(vb.getRoot());
|
setContentView(vb.getRoot());
|
||||||
|
AdManager.loadAllAd();
|
||||||
vb.top.imAddLove.setVisibility(View.GONE);
|
vb.top.imAddLove.setVisibility(View.GONE);
|
||||||
vb.top.dataName.setText(getString(R.string.privacy_policy));
|
vb.top.dataName.setText(getString(R.string.privacy_policy));
|
||||||
vb.top.imageviewBack.setOnClickListener(new View.OnClickListener() {
|
vb.top.imageviewBack.setOnClickListener(new View.OnClickListener() {
|
||||||
|
|||||||
@ -14,9 +14,7 @@ import android.view.LayoutInflater;
|
|||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
|
|
||||||
import com.example.funnysounds.R;
|
|
||||||
import com.example.funnysounds.action.CategoryNameSoundsrListener;
|
import com.example.funnysounds.action.CategoryNameSoundsrListener;
|
||||||
import com.example.funnysounds.activity.MainActivity;
|
|
||||||
import com.example.funnysounds.data.CategoryList;
|
import com.example.funnysounds.data.CategoryList;
|
||||||
import com.example.funnysounds.databinding.FragmentCategoryBinding;
|
import com.example.funnysounds.databinding.FragmentCategoryBinding;
|
||||||
import com.example.funnysounds.resolve.MySpace;
|
import com.example.funnysounds.resolve.MySpace;
|
||||||
|
|||||||
@ -2,6 +2,10 @@ package com.example.funnysounds.resolve;
|
|||||||
|
|
||||||
import android.app.Application;
|
import android.app.Application;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.content.pm.PackageInfo;
|
||||||
|
import android.content.pm.PackageManager;
|
||||||
|
import android.os.Build;
|
||||||
|
import android.os.Bundle;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
import androidx.lifecycle.LiveData;
|
import androidx.lifecycle.LiveData;
|
||||||
@ -11,6 +15,8 @@ import com.anythink.core.api.NetTrafficeCallback;
|
|||||||
import com.example.funnysounds.data.CategoryList;
|
import com.example.funnysounds.data.CategoryList;
|
||||||
import com.example.funnysounds.room.MyRoom;
|
import com.example.funnysounds.room.MyRoom;
|
||||||
import com.example.funnysounds.topon.AdManager;
|
import com.example.funnysounds.topon.AdManager;
|
||||||
|
import com.example.funnysounds.value.StaticValue;
|
||||||
|
import com.google.firebase.analytics.FirebaseAnalytics;
|
||||||
import com.google.gson.Gson;
|
import com.google.gson.Gson;
|
||||||
import com.google.gson.reflect.TypeToken;
|
import com.google.gson.reflect.TypeToken;
|
||||||
|
|
||||||
@ -34,6 +40,7 @@ public class Sounds extends Application {
|
|||||||
public static final String TABLE_1 = "table_category";
|
public static final String TABLE_1 = "table_category";
|
||||||
public static final String TABLE_2 = "table_data";
|
public static final String TABLE_2 = "table_data";
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onCreate() {
|
public void onCreate() {
|
||||||
super.onCreate();
|
super.onCreate();
|
||||||
@ -43,7 +50,6 @@ public class Sounds extends Application {
|
|||||||
new Thread(new Runnable() {
|
new Thread(new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
|
|
||||||
List<CategoryList> categoryLists = MyRoom.getInstance().getCategoryDao().queryAllData();
|
List<CategoryList> categoryLists = MyRoom.getInstance().getCategoryDao().queryAllData();
|
||||||
if (categoryLists.size() == 0) {
|
if (categoryLists.size() == 0) {
|
||||||
try {
|
try {
|
||||||
@ -60,6 +66,41 @@ public class Sounds extends Application {
|
|||||||
}
|
}
|
||||||
}).start();
|
}).start();
|
||||||
|
|
||||||
|
initFirebaseLogEvent();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private void initFirebaseLogEvent() {
|
||||||
|
Boolean firstInstall = SpSave.getFirstInstall();
|
||||||
|
if (firstInstall) {
|
||||||
|
FirebaseAnalytics instance = FirebaseAnalytics.getInstance(this);
|
||||||
|
Bundle bundleEvent = new Bundle();
|
||||||
|
String initiatingPackageName = "";
|
||||||
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
|
||||||
|
try {
|
||||||
|
initiatingPackageName = getPackageManager().getInstallSourceInfo(getApplicationInfo().packageName).getInitiatingPackageName();
|
||||||
|
} catch (PackageManager.NameNotFoundException e) {
|
||||||
|
Log.d(TAG, "-firstInstall----NameNotFoundException=" + e.getMessage());
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
initiatingPackageName = getPackageManager().getInstallerPackageName(getApplicationInfo().packageName);
|
||||||
|
}
|
||||||
|
Log.d(TAG, "-firstInstall----initiatingPackageName=" + initiatingPackageName);
|
||||||
|
bundleEvent.putString("installer_name", initiatingPackageName);
|
||||||
|
try {
|
||||||
|
PackageInfo packageInfo = getPackageManager().getPackageInfo("com.android.vending", 0);
|
||||||
|
bundleEvent.putString("ps_version", packageInfo.versionName);
|
||||||
|
bundleEvent.putInt("ps_version_code", packageInfo.versionCode);
|
||||||
|
} catch (Throwable unused) {
|
||||||
|
bundleEvent.putString("ps_version", "-1");
|
||||||
|
bundleEvent.putInt("ps_version_code", -1);
|
||||||
|
}
|
||||||
|
instance.logEvent(StaticValue.Firebase_Key, bundleEvent);
|
||||||
|
SpSave.setFirstInstall();
|
||||||
|
} else {
|
||||||
|
Log.d(TAG, "--firstInstall-else--");
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void init() {
|
public void init() {
|
||||||
|
|||||||
@ -0,0 +1,35 @@
|
|||||||
|
package com.example.funnysounds.resolve;
|
||||||
|
|
||||||
|
import static android.content.Context.MODE_PRIVATE;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
import android.content.SharedPreferences;
|
||||||
|
|
||||||
|
public class SpSave {
|
||||||
|
|
||||||
|
private static SharedPreferences sp;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
private static String spName = "funny";
|
||||||
|
private static String firstInstall = "first_install";
|
||||||
|
|
||||||
|
public static void setFirstInstall() {
|
||||||
|
SharedPreferences.Editor edit = getSp().edit();
|
||||||
|
edit.putBoolean(firstInstall, false).apply();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private static SharedPreferences getSp() {
|
||||||
|
if (sp == null) {
|
||||||
|
sp = Sounds.mAppContext.getSharedPreferences(spName, MODE_PRIVATE);
|
||||||
|
}
|
||||||
|
return sp;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static Boolean getFirstInstall() {
|
||||||
|
return getSp().getBoolean(firstInstall, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -82,7 +82,7 @@ public class LoveAdapter extends RecyclerView.Adapter<LoveAdapter.VH> {
|
|||||||
holder.getVb().imLove.setOnClickListener(new View.OnClickListener() {
|
holder.getVb().imLove.setOnClickListener(new View.OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(View v) {
|
public void onClick(View v) {
|
||||||
notifyItemRemoved(position);
|
notifyItemRemoved(holder.getAdapterPosition());
|
||||||
Toast.makeText(Sounds.mAppContext,myContext.getString(R.string.remove),Toast.LENGTH_SHORT).show();
|
Toast.makeText(Sounds.mAppContext,myContext.getString(R.string.remove),Toast.LENGTH_SHORT).show();
|
||||||
Readfile.onSwitchIO(new IOListener() {
|
Readfile.onSwitchIO(new IOListener() {
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@ -35,9 +35,9 @@ public class AdManager {
|
|||||||
private static final String place3Id = "n66a0be55b7bbe";
|
private static final String place3Id = "n66a0be55b7bbe";
|
||||||
|
|
||||||
|
|
||||||
private static boolean place1LoadFail = false;
|
public static boolean place1LoadFail = false;
|
||||||
private static boolean place2LoadFail = false;
|
public static boolean place2LoadFail = false;
|
||||||
private static boolean place3LoadFail = false;
|
public static boolean place3LoadFail = false;
|
||||||
|
|
||||||
private static boolean alreadyShow = false;
|
private static boolean alreadyShow = false;
|
||||||
|
|
||||||
@ -84,7 +84,7 @@ public class AdManager {
|
|||||||
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
// ad.load()
|
ad.load();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -127,7 +127,7 @@ public class AdManager {
|
|||||||
public void onInterstitialAdShow(ATAdInfo atAdInfo) {
|
public void onInterstitialAdShow(ATAdInfo atAdInfo) {
|
||||||
Log.d(Sounds.TAG, "AdShow " + atAdInfo.getShowId());
|
Log.d(Sounds.TAG, "AdShow " + atAdInfo.getShowId());
|
||||||
listener.showSuccess();
|
listener.showSuccess();
|
||||||
// ad.load()
|
ad.load();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@ -8,4 +8,8 @@ public class StaticValue {
|
|||||||
|
|
||||||
public static final String key_record_path= "key_path";
|
public static final String key_record_path= "key_path";
|
||||||
|
|
||||||
|
public static int enterDetailCount = 0;
|
||||||
|
public static final String Firebase_Key= "install_source";
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3,6 +3,6 @@
|
|||||||
android:shape="rectangle">
|
android:shape="rectangle">
|
||||||
|
|
||||||
<corners android:radius="8dp"/>
|
<corners android:radius="8dp"/>
|
||||||
<solid android:color="@color/add_btn_bg"/>
|
<solid android:color="@color/sounds_main"/>
|
||||||
|
|
||||||
</shape>
|
</shape>
|
||||||
@ -8,5 +8,5 @@
|
|||||||
android:fillColor="@color/sounds_main"/>
|
android:fillColor="@color/sounds_main"/>
|
||||||
<path
|
<path
|
||||||
android:pathData="M418,281.5a41,41 0,0 0,-41.8 40.2v385.1a41.9,41.9 0,0 0,83.7 0v-385.1a41.2,41.2 0,0 0,-41.9 -40.2zM606,281.5a41,41 0,0 0,-41.8 40.2v385.1a41.9,41.9 0,0 0,83.7 0v-385.1a41.2,41.2 0,0 0,-41.9 -40.2z"
|
android:pathData="M418,281.5a41,41 0,0 0,-41.8 40.2v385.1a41.9,41.9 0,0 0,83.7 0v-385.1a41.2,41.2 0,0 0,-41.9 -40.2zM606,281.5a41,41 0,0 0,-41.8 40.2v385.1a41.9,41.9 0,0 0,83.7 0v-385.1a41.2,41.2 0,0 0,-41.9 -40.2z"
|
||||||
android:fillColor="#FFFFFF"/>
|
android:fillColor="@color/white"/>
|
||||||
</vector>
|
</vector>
|
||||||
|
|||||||
@ -23,7 +23,7 @@
|
|||||||
android:src="@mipmap/ic_launcher" />
|
android:src="@mipmap/ic_launcher" />
|
||||||
|
|
||||||
|
|
||||||
<android.widget.Button
|
<ImageView
|
||||||
android:id="@+id/btn_play_pause"
|
android:id="@+id/btn_play_pause"
|
||||||
android:layout_width="50dp"
|
android:layout_width="50dp"
|
||||||
android:layout_height="50dp"
|
android:layout_height="50dp"
|
||||||
@ -103,4 +103,30 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_centerInParent="true"
|
android:layout_centerInParent="true"
|
||||||
android:indeterminateTint="@color/loading_color" />
|
android:indeterminateTint="@color/loading_color" />
|
||||||
|
|
||||||
|
<RelativeLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:id="@+id/loading_ad"
|
||||||
|
android:visibility="gone"
|
||||||
|
android:background="@color/white">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_centerInParent="true"
|
||||||
|
android:background="@color/white"
|
||||||
|
android:text="@string/loading_ad"
|
||||||
|
android:textSize="18sp"
|
||||||
|
android:id="@+id/tv"
|
||||||
|
android:textColor="@color/text_color_gray" />
|
||||||
|
|
||||||
|
<ProgressBar
|
||||||
|
android:layout_width="45dp"
|
||||||
|
android:layout_height="45dp"
|
||||||
|
android:layout_below="@id/tv"
|
||||||
|
android:layout_centerHorizontal="true"
|
||||||
|
android:layout_marginTop="22dp"
|
||||||
|
android:indeterminateTint="@color/sounds_main" />
|
||||||
|
</RelativeLayout>
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
||||||
@ -30,8 +30,7 @@
|
|||||||
android:text="@string/app_name"
|
android:text="@string/app_name"
|
||||||
android:textColor="@color/black"
|
android:textColor="@color/black"
|
||||||
android:textSize="25sp"
|
android:textSize="25sp"
|
||||||
|
android:textStyle="normal" />
|
||||||
android:textStyle="italic" />
|
|
||||||
|
|
||||||
|
|
||||||
<ProgressBar
|
<ProgressBar
|
||||||
|
|||||||
@ -23,7 +23,7 @@
|
|||||||
android:layout_centerInParent="true"
|
android:layout_centerInParent="true"
|
||||||
android:text="@string/app_name"
|
android:text="@string/app_name"
|
||||||
android:textColor="@color/white"
|
android:textColor="@color/white"
|
||||||
android:textSize="23sp" />
|
android:textSize="18sp" />
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:id="@+id/im_add_love"
|
android:id="@+id/im_add_love"
|
||||||
|
|||||||
@ -9,6 +9,8 @@
|
|||||||
android:id="@+id/record_recycler"
|
android:id="@+id/record_recycler"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
|
android:layout_above="@id/add_btn"
|
||||||
|
android:paddingBottom="10dp"
|
||||||
android:paddingTop="20dp" />
|
android:paddingTop="20dp" />
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -23,9 +23,13 @@
|
|||||||
android:layout_gravity="center"
|
android:layout_gravity="center"
|
||||||
android:layout_marginStart="43dp"
|
android:layout_marginStart="43dp"
|
||||||
android:layout_marginTop="10dp"
|
android:layout_marginTop="10dp"
|
||||||
|
android:layout_toStartOf="@id/im_love"
|
||||||
|
android:paddingEnd="5dp"
|
||||||
android:layout_marginBottom="15dp"
|
android:layout_marginBottom="15dp"
|
||||||
android:layout_toEndOf="@id/im_sounds"
|
android:layout_toEndOf="@id/im_sounds"
|
||||||
android:text="@string/app_name"
|
android:ellipsize="end"
|
||||||
|
android:maxLines="2"
|
||||||
|
android:text="rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrsssssssssssssssssssssssssrrrrrrrrrrrrrrrrrrrrrrrrrr"
|
||||||
android:textColor="@color/black"
|
android:textColor="@color/black"
|
||||||
android:textSize="15sp" />
|
android:textSize="15sp" />
|
||||||
|
|
||||||
|
|||||||
@ -23,9 +23,13 @@
|
|||||||
android:layout_gravity="center"
|
android:layout_gravity="center"
|
||||||
android:layout_marginStart="43dp"
|
android:layout_marginStart="43dp"
|
||||||
android:layout_marginTop="10dp"
|
android:layout_marginTop="10dp"
|
||||||
|
android:layout_toStartOf="@id/im_delete"
|
||||||
android:layout_marginBottom="15dp"
|
android:layout_marginBottom="15dp"
|
||||||
|
android:layout_marginEnd="5dp"
|
||||||
|
android:ellipsize="end"
|
||||||
android:layout_toEndOf="@id/im_sounds"
|
android:layout_toEndOf="@id/im_sounds"
|
||||||
android:text="@string/app_name"
|
android:text="rr"
|
||||||
|
android:maxLines="2"
|
||||||
android:textColor="@color/black"
|
android:textColor="@color/black"
|
||||||
android:textSize="15sp" />
|
android:textSize="15sp" />
|
||||||
|
|
||||||
|
|||||||
14
app/src/main/res/layout/layout_log.xml
Normal file
14
app/src/main/res/layout/layout_log.xml
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/log"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:textSize="17sp"
|
||||||
|
android:textColor="@color/black"
|
||||||
|
android:text="@string/app_name"
|
||||||
|
android:layout_height="wrap_content" />
|
||||||
|
|
||||||
|
</ScrollView>
|
||||||
@ -26,4 +26,5 @@
|
|||||||
<string name="create_sounds">Create sounds</string>
|
<string name="create_sounds">Create sounds</string>
|
||||||
<string name="deleted_successfully">Deleted successfully</string>
|
<string name="deleted_successfully">Deleted successfully</string>
|
||||||
<string name="privacy_policy">Privacy Policy</string>
|
<string name="privacy_policy">Privacy Policy</string>
|
||||||
|
<string name="loading_ad">Loading Ads</string>
|
||||||
</resources>
|
</resources>
|
||||||
@ -2,7 +2,7 @@
|
|||||||
<!-- Base application theme. -->
|
<!-- Base application theme. -->
|
||||||
<style name="Base.Theme.FunnySounds" parent="Theme.Material3.DayNight.NoActionBar">
|
<style name="Base.Theme.FunnySounds" parent="Theme.Material3.DayNight.NoActionBar">
|
||||||
<!-- Customize your light theme here. -->
|
<!-- Customize your light theme here. -->
|
||||||
<!-- <item name="colorPrimary">@color/my_light_primary</item> -->
|
<item name="colorPrimary">@color/sounds_main</item>
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<style name="Theme.FunnySounds" parent="Base.Theme.FunnySounds">
|
<style name="Theme.FunnySounds" parent="Base.Theme.FunnySounds">
|
||||||
|
|||||||
6
keystore.properties
Normal file
6
keystore.properties
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
app_name=Funny Sounds
|
||||||
|
package_name=com.funny.sounds.hd
|
||||||
|
keystoreFile=app/FunnySounds.jks
|
||||||
|
key_alias=key0
|
||||||
|
key_store_password=FunnySounds
|
||||||
|
key_password=FunnySounds
|
||||||
@ -18,11 +18,15 @@ dependencyResolutionManagement {
|
|||||||
mavenCentral()
|
mavenCentral()
|
||||||
//Anythink(Core)
|
//Anythink(Core)
|
||||||
maven("https://jfrog.anythinktech.com/artifactory/overseas_sdk")
|
maven("https://jfrog.anythinktech.com/artifactory/overseas_sdk")
|
||||||
|
//Ironsource
|
||||||
|
maven("https://android-sdk.is.com/")
|
||||||
//Mintegral
|
//Mintegral
|
||||||
maven("https://dl-maven-android.mintegral.com/repository/mbridge_android_sdk_oversea")
|
maven("https://dl-maven-android.mintegral.com/repository/mbridge_android_sdk_oversea")
|
||||||
|
//Pangle
|
||||||
|
maven ( "https://artifact.bytedance.com/repository/pangle")
|
||||||
|
|
||||||
//TopOn集成测试工具
|
//TopOn集成测试工具
|
||||||
maven ( "https://jfrog.anythinktech.com/artifactory/debugger")
|
// maven ( "https://jfrog.anythinktech.com/artifactory/debugger")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user