2019-04-20 05:29:45 +00:00
|
|
|
package code.name.monkey.retromusic.activities.bugreport.model;
|
2018-12-06 10:23:03 +00:00
|
|
|
|
|
|
|
import android.annotation.SuppressLint;
|
|
|
|
import android.content.Context;
|
|
|
|
import android.content.pm.PackageInfo;
|
|
|
|
import android.content.pm.PackageManager;
|
|
|
|
import android.os.Build;
|
2021-09-08 18:30:20 +00:00
|
|
|
|
2019-11-15 17:44:42 +00:00
|
|
|
import androidx.annotation.IntRange;
|
2021-11-28 06:47:20 +00:00
|
|
|
import androidx.annotation.NonNull;
|
2021-09-08 18:30:20 +00:00
|
|
|
|
2019-12-30 11:01:50 +00:00
|
|
|
import java.util.Arrays;
|
2020-04-24 18:11:14 +00:00
|
|
|
import java.util.Locale;
|
2018-12-06 10:23:03 +00:00
|
|
|
|
2021-09-08 18:30:20 +00:00
|
|
|
import code.name.monkey.retromusic.util.PreferenceUtil;
|
|
|
|
|
2018-12-06 10:23:03 +00:00
|
|
|
public class DeviceInfo {
|
2019-12-30 11:01:50 +00:00
|
|
|
|
2020-10-06 08:46:04 +00:00
|
|
|
@SuppressLint("NewApi")
|
|
|
|
private final String[] abis =
|
2021-11-28 06:47:20 +00:00
|
|
|
Build.SUPPORTED_ABIS;
|
2019-12-30 11:01:50 +00:00
|
|
|
|
2020-10-06 08:46:04 +00:00
|
|
|
@SuppressLint("NewApi")
|
|
|
|
private final String[] abis32Bits =
|
2021-11-28 06:47:20 +00:00
|
|
|
Build.SUPPORTED_32_BIT_ABIS;
|
2018-12-06 10:23:03 +00:00
|
|
|
|
2020-10-06 08:46:04 +00:00
|
|
|
@SuppressLint("NewApi")
|
|
|
|
private final String[] abis64Bits =
|
2021-11-28 06:47:20 +00:00
|
|
|
Build.SUPPORTED_64_BIT_ABIS;
|
2019-12-30 11:01:50 +00:00
|
|
|
|
2020-10-06 08:46:04 +00:00
|
|
|
private final String baseTheme;
|
2019-12-30 11:01:50 +00:00
|
|
|
|
2020-10-06 08:46:04 +00:00
|
|
|
private final String brand = Build.BRAND;
|
2019-12-30 11:01:50 +00:00
|
|
|
|
2020-10-06 08:46:04 +00:00
|
|
|
private final String buildID = Build.DISPLAY;
|
2019-12-30 11:01:50 +00:00
|
|
|
|
2020-10-06 08:46:04 +00:00
|
|
|
private final String buildVersion = Build.VERSION.INCREMENTAL;
|
2019-12-30 11:01:50 +00:00
|
|
|
|
2020-10-06 08:46:04 +00:00
|
|
|
private final String device = Build.DEVICE;
|
2019-12-30 11:01:50 +00:00
|
|
|
|
2020-10-06 08:46:04 +00:00
|
|
|
private final String hardware = Build.HARDWARE;
|
2019-12-30 11:01:50 +00:00
|
|
|
|
2020-10-06 08:46:04 +00:00
|
|
|
private final boolean isAdaptive;
|
2019-12-30 11:01:50 +00:00
|
|
|
|
2020-10-06 08:46:04 +00:00
|
|
|
private final String manufacturer = Build.MANUFACTURER;
|
2019-12-30 11:01:50 +00:00
|
|
|
|
2020-10-06 08:46:04 +00:00
|
|
|
private final String model = Build.MODEL;
|
2019-12-30 11:01:50 +00:00
|
|
|
|
2020-10-06 08:46:04 +00:00
|
|
|
private final String nowPlayingTheme;
|
2019-12-30 11:01:50 +00:00
|
|
|
|
2020-10-06 08:46:04 +00:00
|
|
|
private final String product = Build.PRODUCT;
|
2019-12-30 11:01:50 +00:00
|
|
|
|
2020-10-06 08:46:04 +00:00
|
|
|
private final String releaseVersion = Build.VERSION.RELEASE;
|
2019-12-30 11:01:50 +00:00
|
|
|
|
2020-10-06 08:46:04 +00:00
|
|
|
@IntRange(from = 0)
|
|
|
|
private final int sdkVersion = Build.VERSION.SDK_INT;
|
2019-12-30 11:01:50 +00:00
|
|
|
|
2020-10-06 08:46:04 +00:00
|
|
|
private final int versionCode;
|
2019-12-30 11:01:50 +00:00
|
|
|
|
2020-10-06 08:46:04 +00:00
|
|
|
private final String versionName;
|
|
|
|
private final String selectedLang;
|
2018-12-06 10:23:03 +00:00
|
|
|
|
2020-10-06 08:46:04 +00:00
|
|
|
public DeviceInfo(Context context) {
|
|
|
|
PackageInfo packageInfo;
|
|
|
|
try {
|
|
|
|
packageInfo = context.getPackageManager().getPackageInfo(context.getPackageName(), 0);
|
|
|
|
} catch (PackageManager.NameNotFoundException e) {
|
|
|
|
packageInfo = null;
|
2018-12-06 10:23:03 +00:00
|
|
|
}
|
2020-10-06 08:46:04 +00:00
|
|
|
if (packageInfo != null) {
|
|
|
|
versionCode = packageInfo.versionCode;
|
|
|
|
versionName = packageInfo.versionName;
|
|
|
|
} else {
|
|
|
|
versionCode = -1;
|
|
|
|
versionName = null;
|
2018-12-06 10:23:03 +00:00
|
|
|
}
|
2020-10-06 08:46:04 +00:00
|
|
|
baseTheme = PreferenceUtil.INSTANCE.getBaseTheme();
|
|
|
|
nowPlayingTheme =
|
|
|
|
context.getString(PreferenceUtil.INSTANCE.getNowPlayingScreen().getTitleRes());
|
|
|
|
isAdaptive = PreferenceUtil.INSTANCE.isAdaptiveColor();
|
|
|
|
selectedLang = PreferenceUtil.INSTANCE.getLanguageCode();
|
|
|
|
}
|
|
|
|
|
|
|
|
public String toMarkdown() {
|
|
|
|
return "Device info:\n"
|
|
|
|
+ "---\n"
|
|
|
|
+ "<table>\n"
|
|
|
|
+ "<tr><td><b>App version</b></td><td>"
|
|
|
|
+ versionName
|
|
|
|
+ "</td></tr>\n"
|
|
|
|
+ "<tr><td>App version code</td><td>"
|
|
|
|
+ versionCode
|
|
|
|
+ "</td></tr>\n"
|
|
|
|
+ "<tr><td>Android build version</td><td>"
|
|
|
|
+ buildVersion
|
|
|
|
+ "</td></tr>\n"
|
|
|
|
+ "<tr><td>Android release version</td><td>"
|
|
|
|
+ releaseVersion
|
|
|
|
+ "</td></tr>\n"
|
|
|
|
+ "<tr><td>Android SDK version</td><td>"
|
|
|
|
+ sdkVersion
|
|
|
|
+ "</td></tr>\n"
|
|
|
|
+ "<tr><td>Android build ID</td><td>"
|
|
|
|
+ buildID
|
|
|
|
+ "</td></tr>\n"
|
|
|
|
+ "<tr><td>Device brand</td><td>"
|
|
|
|
+ brand
|
|
|
|
+ "</td></tr>\n"
|
|
|
|
+ "<tr><td>Device manufacturer</td><td>"
|
|
|
|
+ manufacturer
|
|
|
|
+ "</td></tr>\n"
|
|
|
|
+ "<tr><td>Device name</td><td>"
|
|
|
|
+ device
|
|
|
|
+ "</td></tr>\n"
|
|
|
|
+ "<tr><td>Device model</td><td>"
|
|
|
|
+ model
|
|
|
|
+ "</td></tr>\n"
|
|
|
|
+ "<tr><td>Device product name</td><td>"
|
|
|
|
+ product
|
|
|
|
+ "</td></tr>\n"
|
|
|
|
+ "<tr><td>Device hardware name</td><td>"
|
|
|
|
+ hardware
|
|
|
|
+ "</td></tr>\n"
|
|
|
|
+ "<tr><td>ABIs</td><td>"
|
|
|
|
+ Arrays.toString(abis)
|
|
|
|
+ "</td></tr>\n"
|
|
|
|
+ "<tr><td>ABIs (32bit)</td><td>"
|
|
|
|
+ Arrays.toString(abis32Bits)
|
|
|
|
+ "</td></tr>\n"
|
|
|
|
+ "<tr><td>ABIs (64bit)</td><td>"
|
|
|
|
+ Arrays.toString(abis64Bits)
|
|
|
|
+ "</td></tr>\n"
|
|
|
|
+ "<tr><td>Language</td><td>"
|
|
|
|
+ selectedLang
|
|
|
|
+ "</td></tr>\n"
|
|
|
|
+ "</table>\n";
|
|
|
|
}
|
|
|
|
|
2021-11-28 06:47:20 +00:00
|
|
|
@NonNull
|
2020-10-06 08:46:04 +00:00
|
|
|
@Override
|
|
|
|
public String toString() {
|
|
|
|
return "App version: "
|
|
|
|
+ versionName
|
|
|
|
+ "\n"
|
|
|
|
+ "App version code: "
|
|
|
|
+ versionCode
|
|
|
|
+ "\n"
|
|
|
|
+ "Android build version: "
|
|
|
|
+ buildVersion
|
|
|
|
+ "\n"
|
|
|
|
+ "Android release version: "
|
|
|
|
+ releaseVersion
|
|
|
|
+ "\n"
|
|
|
|
+ "Android SDK version: "
|
|
|
|
+ sdkVersion
|
|
|
|
+ "\n"
|
|
|
|
+ "Android build ID: "
|
|
|
|
+ buildID
|
|
|
|
+ "\n"
|
|
|
|
+ "Device brand: "
|
|
|
|
+ brand
|
|
|
|
+ "\n"
|
|
|
|
+ "Device manufacturer: "
|
|
|
|
+ manufacturer
|
|
|
|
+ "\n"
|
|
|
|
+ "Device name: "
|
|
|
|
+ device
|
|
|
|
+ "\n"
|
|
|
|
+ "Device model: "
|
|
|
|
+ model
|
|
|
|
+ "\n"
|
|
|
|
+ "Device product name: "
|
|
|
|
+ product
|
|
|
|
+ "\n"
|
|
|
|
+ "Device hardware name: "
|
|
|
|
+ hardware
|
|
|
|
+ "\n"
|
|
|
|
+ "ABIs: "
|
|
|
|
+ Arrays.toString(abis)
|
|
|
|
+ "\n"
|
|
|
|
+ "ABIs (32bit): "
|
|
|
|
+ Arrays.toString(abis32Bits)
|
|
|
|
+ "\n"
|
|
|
|
+ "ABIs (64bit): "
|
|
|
|
+ Arrays.toString(abis64Bits)
|
|
|
|
+ "\n"
|
|
|
|
+ "Base theme: "
|
|
|
|
+ baseTheme
|
|
|
|
+ "\n"
|
|
|
|
+ "Now playing theme: "
|
|
|
|
+ nowPlayingTheme
|
|
|
|
+ "\n"
|
|
|
|
+ "Adaptive: "
|
|
|
|
+ isAdaptive
|
|
|
|
+ "\n"
|
|
|
|
+ "System language: "
|
|
|
|
+ Locale.getDefault().toLanguageTag()
|
|
|
|
+ "\n"
|
|
|
|
+ "In-App Language: "
|
|
|
|
+ selectedLang;
|
|
|
|
}
|
2018-12-06 10:23:03 +00:00
|
|
|
}
|