修复了Android高版本崩溃问题,优化了细节操作。
This commit is contained in:
parent
e9986ef8c3
commit
e84f9aaa85
|
@ -12,7 +12,7 @@ android {
|
||||||
//noinspection OldTargetApi
|
//noinspection OldTargetApi
|
||||||
targetSdk 31
|
targetSdk 31
|
||||||
versionCode 1
|
versionCode 1
|
||||||
versionName "1.5.0"
|
versionName "1.5.1"
|
||||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||||
}
|
}
|
||||||
compileOptions {
|
compileOptions {
|
||||||
|
@ -36,22 +36,6 @@ android {
|
||||||
outputFileName = "Cloud_music-${variant.name}-v${variant.versionName}.apk"
|
outputFileName = "Cloud_music-${variant.name}-v${variant.versionName}.apk"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
signingConfigs {
|
|
||||||
signConfig {
|
|
||||||
storeFile file('F:/muqing.jks')
|
|
||||||
// 证书存放位置和名字
|
|
||||||
storePassword 'muqing153'
|
|
||||||
// 密码
|
|
||||||
keyAlias 'muqing'
|
|
||||||
// 别名
|
|
||||||
keyPassword 'muqing153'
|
|
||||||
// 别名对应的密码
|
|
||||||
}
|
|
||||||
release {
|
|
||||||
v1SigningEnabled true //正式版时对应的签名规则 true使用 false不适用
|
|
||||||
v2SigningEnabled true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
kotlinOptions {
|
kotlinOptions {
|
||||||
jvmTarget = '1.8'
|
jvmTarget = '1.8'
|
||||||
}
|
}
|
||||||
|
|
|
@ -1090,9 +1090,6 @@ open class LyricViewX : EaseView, LyricViewXInterface {
|
||||||
}
|
}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
|
|
||||||
private const val TAG = "LyricViewX"
|
|
||||||
|
|
||||||
// 时间线持续时间
|
// 时间线持续时间
|
||||||
private const val TIMELINE_KEEP_TIME = 3 * DateUtils.SECOND_IN_MILLIS
|
private const val TIMELINE_KEEP_TIME = 3 * DateUtils.SECOND_IN_MILLIS
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,20 +0,0 @@
|
||||||
package com.dirror.lyricviewx
|
|
||||||
|
|
||||||
import android.animation.TimeInterpolator
|
|
||||||
import kotlin.math.pow
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Smooth 插值器
|
|
||||||
* @author Moriafly
|
|
||||||
*/
|
|
||||||
@Deprecated("过时")
|
|
||||||
class SmoothInterpolator: TimeInterpolator {
|
|
||||||
override fun getInterpolation(input: Float): Float {
|
|
||||||
val a = 1.11571230005336
|
|
||||||
val b = -1.99852071205059
|
|
||||||
val c = 0.272428743837376
|
|
||||||
val d = -1.15835562067601E-05
|
|
||||||
return ((a - d) / (1.0 + (input.toDouble() / c).pow(b)) + d).toFloat()
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -13,6 +13,7 @@ import com.bumptech.glide.load.engine.GlideException;
|
||||||
import com.bumptech.glide.request.RequestListener;
|
import com.bumptech.glide.request.RequestListener;
|
||||||
import com.bumptech.glide.request.target.Target;
|
import com.bumptech.glide.request.target.Target;
|
||||||
import com.muqingbfq.api.url;
|
import com.muqingbfq.api.url;
|
||||||
|
import com.muqingbfq.fragment.bfq_db;
|
||||||
import com.muqingbfq.fragment.mp3;
|
import com.muqingbfq.fragment.mp3;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
@ -22,9 +23,9 @@ import java.util.TimerTask;
|
||||||
public class MediaPlayer extends android.media.MediaPlayer {
|
public class MediaPlayer extends android.media.MediaPlayer {
|
||||||
public MediaPlayer() {
|
public MediaPlayer() {
|
||||||
this.setOnCompletionListener(mediaPlayer -> {
|
this.setOnCompletionListener(mediaPlayer -> {
|
||||||
if (!home.db.view.isShown()) {
|
/* if (!home.db.view.isShown()) {
|
||||||
home.db.view.setVisibility(View.VISIBLE);
|
home.db.view.setVisibility(View.VISIBLE);
|
||||||
}
|
}*/
|
||||||
int i = bfqkz.getmti(bfqkz.ms);
|
int i = bfqkz.getmti(bfqkz.ms);
|
||||||
bfqkz.xm = bfqkz.list.get(i);
|
bfqkz.xm = bfqkz.list.get(i);
|
||||||
new Thread() {
|
new Thread() {
|
||||||
|
@ -50,7 +51,7 @@ public class MediaPlayer extends android.media.MediaPlayer {
|
||||||
if (bfq.kg != null) {
|
if (bfq.kg != null) {
|
||||||
bfq.kg.setImageResource(R.drawable.zt);
|
bfq.kg.setImageResource(R.drawable.zt);
|
||||||
}
|
}
|
||||||
home.db.txa.setImageResource(R.drawable.zt);
|
bfq_db.txa.setImageResource(R.drawable.zt);
|
||||||
bfqkz.updateNotification();
|
bfqkz.updateNotification();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -88,7 +89,7 @@ public class MediaPlayer extends android.media.MediaPlayer {
|
||||||
if (bfq.kg != null) {
|
if (bfq.kg != null) {
|
||||||
bfq.kg.setImageResource(R.drawable.bf);
|
bfq.kg.setImageResource(R.drawable.bf);
|
||||||
}
|
}
|
||||||
home.db.txa.setImageResource(R.drawable.bf);
|
bfq_db.txa.setImageResource(R.drawable.bf);
|
||||||
bfqkz.updateNotification();
|
bfqkz.updateNotification();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -99,7 +100,7 @@ public class MediaPlayer extends android.media.MediaPlayer {
|
||||||
prepare();
|
prepare();
|
||||||
bfqkz.tdt_max = getDuration();
|
bfqkz.tdt_max = getDuration();
|
||||||
bfqkz.tdt_wz = getCurrentPosition();
|
bfqkz.tdt_wz = getCurrentPosition();
|
||||||
Glide.with(main.context)
|
Glide.with(home.appCompatActivity)
|
||||||
.asBitmap()
|
.asBitmap()
|
||||||
.load(bfqkz.xm.picurl)
|
.load(bfqkz.xm.picurl)
|
||||||
.addListener(new RequestListener<Bitmap>() {
|
.addListener(new RequestListener<Bitmap>() {
|
||||||
|
@ -109,7 +110,6 @@ public class MediaPlayer extends android.media.MediaPlayer {
|
||||||
bfqkz.notify.setBitmap(null);
|
bfqkz.notify.setBitmap(null);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onResourceReady(@NonNull Bitmap bitmap, @NonNull Object model, Target<Bitmap> target,
|
public boolean onResourceReady(@NonNull Bitmap bitmap, @NonNull Object model, Target<Bitmap> target,
|
||||||
@NonNull DataSource dataSource, boolean isFirstResource) {
|
@NonNull DataSource dataSource, boolean isFirstResource) {
|
||||||
|
@ -128,8 +128,8 @@ public class MediaPlayer extends android.media.MediaPlayer {
|
||||||
bfq.zz.setText(bfqkz.xm.zz);
|
bfq.zz.setText(bfqkz.xm.zz);
|
||||||
bfq_an.islike(bfq.like.getContext());
|
bfq_an.islike(bfq.like.getContext());
|
||||||
}
|
}
|
||||||
home.db.name.setText(bfqkz.xm.name);
|
bfq_db.name.setText(bfqkz.xm.name);
|
||||||
home.db.zz.setText(bfqkz.xm.zz);
|
bfq_db.zz.setText(bfqkz.xm.zz);
|
||||||
if (mp3.lbspq != null) {
|
if (mp3.lbspq != null) {
|
||||||
mp3.lbspq.notifyDataSetChanged();
|
mp3.lbspq.notifyDataSetChanged();
|
||||||
}
|
}
|
||||||
|
|
|
@ -92,7 +92,7 @@ public class url extends Thread {
|
||||||
return new JSONObject(hq).getJSONArray("songs").getJSONObject(0)
|
return new JSONObject(hq).getJSONArray("songs").getJSONObject(0)
|
||||||
.getJSONObject("al").getString("picUrl");
|
.getJSONObject("al").getString("picUrl");
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
yc.start(main.context, e);
|
yc.start(e);
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
|
@ -71,6 +71,7 @@ public class bfq extends AppCompatActivity {
|
||||||
}
|
}
|
||||||
inflate = inflater.inflate(R.layout.fragment_bfq, container, false);
|
inflate = inflater.inflate(R.layout.fragment_bfq, container, false);
|
||||||
lrcView = inflate.findViewById(R.id.gc);
|
lrcView = inflate.findViewById(R.id.gc);
|
||||||
|
lrcView.setVisibility(View.GONE);
|
||||||
Toolbar toolbar = inflate.findViewById(R.id.toolbar);
|
Toolbar toolbar = inflate.findViewById(R.id.toolbar);
|
||||||
name = inflate.findViewById(R.id.name);
|
name = inflate.findViewById(R.id.name);
|
||||||
zz = inflate.findViewById(R.id.zz);
|
zz = inflate.findViewById(R.id.zz);
|
||||||
|
@ -119,10 +120,6 @@ public class bfq extends AppCompatActivity {
|
||||||
lrcView.setVisibility(View.GONE);
|
lrcView.setVisibility(View.GONE);
|
||||||
kp.setVisibility(View.VISIBLE);
|
kp.setVisibility(View.VISIBLE);
|
||||||
});
|
});
|
||||||
inflate.findViewById(R.id.layout).setOnClickListener(view1 -> {
|
|
||||||
lrcView.setVisibility(View.GONE);
|
|
||||||
kp.setVisibility(View.VISIBLE);
|
|
||||||
});
|
|
||||||
inflate.findViewById(R.id.bfq_list_mp3).
|
inflate.findViewById(R.id.bfq_list_mp3).
|
||||||
setOnClickListener(view1 -> com.muqingbfq.fragment.bflb_db.start(context));
|
setOnClickListener(view1 -> com.muqingbfq.fragment.bflb_db.start(context));
|
||||||
|
|
||||||
|
|
|
@ -4,8 +4,8 @@ import android.annotation.SuppressLint;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.support.v4.media.MediaBrowserCompat;
|
import android.support.v4.media.MediaBrowserCompat;
|
||||||
import android.support.v4.media.MediaMetadataCompat;
|
import android.support.v4.media.MediaMetadataCompat;
|
||||||
import android.support.v4.media.session.MediaControllerCompat;
|
|
||||||
import android.support.v4.media.session.MediaSessionCompat;
|
import android.support.v4.media.session.MediaSessionCompat;
|
||||||
|
import android.support.v4.media.session.PlaybackStateCompat;
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
|
@ -29,6 +29,7 @@ public class bfqkz extends MediaBrowserServiceCompat {
|
||||||
public static boolean like_bool;
|
public static boolean like_bool;
|
||||||
@SuppressLint("StaticFieldLeak")
|
@SuppressLint("StaticFieldLeak")
|
||||||
public static com.muqingbfq.mq.NotificationManagerCompat notify;
|
public static com.muqingbfq.mq.NotificationManagerCompat notify;
|
||||||
|
|
||||||
public static int getmti(int s) {
|
public static int getmti(int s) {
|
||||||
int i = bfqkz.list.indexOf(xm);
|
int i = bfqkz.list.indexOf(xm);
|
||||||
if (s == 1) {
|
if (s == 1) {
|
||||||
|
@ -57,54 +58,55 @@ public class bfqkz extends MediaBrowserServiceCompat {
|
||||||
gj.sc("bfqkz mp3(String id) :" + e);
|
gj.sc("bfqkz mp3(String id) :" + e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static MediaSessionCompat mSession;
|
public static MediaSessionCompat mSession;
|
||||||
|
public static MediaMetadataCompat build;
|
||||||
|
public static PlaybackStateCompat playback;
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onCreate() {
|
public void onCreate() {
|
||||||
super.onCreate();
|
super.onCreate();
|
||||||
mSession = new MediaSessionCompat(this,"MusicService");
|
mSession = new MediaSessionCompat(this, "MusicService");
|
||||||
|
playback=new PlaybackStateCompat.Builder()
|
||||||
|
.setState(PlaybackStateCompat.STATE_NONE,0,1.0f)
|
||||||
|
.build();
|
||||||
mSession.setCallback(new MediaSessionCompat.Callback() {
|
mSession.setCallback(new MediaSessionCompat.Callback() {
|
||||||
@Override
|
@Override
|
||||||
public void onPlay() {
|
public void onPlay() {
|
||||||
mt.start();
|
mt.start();
|
||||||
// 处理播放音乐逻辑
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onPause() {
|
public void onPause() {
|
||||||
// 处理暂停音乐逻辑
|
// 处理暂停音乐逻辑
|
||||||
mt.pause();
|
mt.pause();
|
||||||
|
if(playback.getState() == PlaybackStateCompat.STATE_PLAYING){
|
||||||
|
playback = new PlaybackStateCompat.Builder()
|
||||||
|
.setState(PlaybackStateCompat.STATE_PAUSED,0,1.0f)
|
||||||
|
.build();
|
||||||
|
mSession.setPlaybackState(playback);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onSkipToNext() {
|
public void onSkipToNext() {
|
||||||
// 处理切换到下一首音乐逻辑
|
// 处理切换到下一首音乐逻辑
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onSkipToPrevious() {
|
public void onSkipToPrevious() {
|
||||||
// 处理切换到上一首音乐逻辑
|
// 处理切换到上一首音乐逻辑
|
||||||
}
|
}
|
||||||
});//设置回调
|
});//设置回调
|
||||||
/* Intent intent = new Intent(Intent.ACTION_MAIN);
|
build = new MediaMetadataCompat.Builder()
|
||||||
intent.addCategory(Intent.CATEGORY_LAUNCHER);
|
|
||||||
intent.setComponent(new ComponentName(this, start.class));//用ComponentName得到class对象
|
|
||||||
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
|
|
||||||
| Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);// 关键的一步,设置启动模式,两种情况
|
|
||||||
MediaButtonReceiver.handleIntent(mSession,intent);*/
|
|
||||||
|
|
||||||
MediaMetadataCompat build = new MediaMetadataCompat.Builder()
|
|
||||||
.putString(MediaMetadataCompat.METADATA_KEY_ARTIST, "歌手名称")
|
|
||||||
.putString(MediaMetadataCompat.METADATA_KEY_ALBUM, "专辑名称")
|
|
||||||
.putString(MediaMetadataCompat.METADATA_KEY_TITLE, "歌曲名称")
|
|
||||||
.build();
|
.build();
|
||||||
mSession.setMetadata(build);
|
mSession.setMetadata(build);
|
||||||
|
mSession.setPlaybackState(playback);
|
||||||
|
mSession.setFlags(MediaSessionCompat.FLAG_HANDLES_TRANSPORT_CONTROLS);
|
||||||
mSession.setActive(true);
|
mSession.setActive(true);
|
||||||
setSessionToken(mSession.getSessionToken());
|
setSessionToken(mSession.getSessionToken());
|
||||||
notify = new com.muqingbfq.mq.NotificationManagerCompat(this);
|
notify = new com.muqingbfq.mq.NotificationManagerCompat(this);
|
||||||
/* ;
|
|
||||||
// 激活MediaSessionCompat
|
|
||||||
*/
|
|
||||||
// 初始化通知栏
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
|
|
|
@ -26,15 +26,6 @@ public class bflb_db extends BottomSheetDialog {
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
setContentView(R.layout.fragment_bflb_db);
|
setContentView(R.layout.fragment_bflb_db);
|
||||||
// 获取对话框窗口
|
|
||||||
/* Window window = getWindow();
|
|
||||||
if (window != null) {
|
|
||||||
// 设置高度为默认值(例如:500dp)
|
|
||||||
WindowManager.LayoutParams params = window.getAttributes();
|
|
||||||
params.height =
|
|
||||||
window.setAttributes(params);
|
|
||||||
}*/
|
|
||||||
// 设置默认弹出高度和最大上拉高度为 400dp
|
|
||||||
int height = main.g - main.g / 2 / 2;
|
int height = main.g - main.g / 2 / 2;
|
||||||
getBehavior().setPeekHeight(height);
|
getBehavior().setPeekHeight(height);
|
||||||
getBehavior().setMaxHeight(height);
|
getBehavior().setMaxHeight(height);
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
package com.muqingbfq.fragment;
|
package com.muqingbfq.fragment;
|
||||||
|
|
||||||
|
import android.annotation.SuppressLint;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.SharedPreferences;
|
import android.content.SharedPreferences;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
|
@ -24,9 +25,11 @@ import java.lang.reflect.Type;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class bfq_db extends Fragment {
|
public class bfq_db extends Fragment {
|
||||||
public View view;
|
@SuppressLint("StaticFieldLeak")
|
||||||
public TextView name, zz;
|
public static View view;
|
||||||
public ImageView txa;
|
public static TextView name, zz;
|
||||||
|
public static ImageView txa;
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
||||||
|
|
|
@ -11,9 +11,11 @@ import android.widget.Toast;
|
||||||
|
|
||||||
import com.muqingbfq.R;
|
import com.muqingbfq.R;
|
||||||
import com.muqingbfq.activity_about_software;
|
import com.muqingbfq.activity_about_software;
|
||||||
|
import com.muqingbfq.home;
|
||||||
import com.muqingbfq.login.user_logs;
|
import com.muqingbfq.login.user_logs;
|
||||||
import com.muqingbfq.login.user_message;
|
import com.muqingbfq.login.user_message;
|
||||||
import com.muqingbfq.mq.gj;
|
import com.muqingbfq.mq.gj;
|
||||||
|
import com.muqingbfq.mq.wl;
|
||||||
|
|
||||||
public class sz {
|
public class sz {
|
||||||
|
|
||||||
|
@ -69,6 +71,9 @@ public class sz {
|
||||||
} else if (id == R.id.f) {
|
} else if (id == R.id.f) {
|
||||||
context.startActivity(new Intent(context, activity_about_software.class));
|
context.startActivity(new Intent(context, activity_about_software.class));
|
||||||
// 关于软件
|
// 关于软件
|
||||||
|
} else if (id == R.id.g) {
|
||||||
|
new com.muqingbfq.login.visitor();
|
||||||
|
home.appCompatActivity.finish();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -5,7 +5,6 @@ import android.content.ComponentName;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.SharedPreferences;
|
import android.content.SharedPreferences;
|
||||||
import android.media.AudioManager;
|
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.RemoteException;
|
import android.os.RemoteException;
|
||||||
import android.support.v4.media.MediaBrowserCompat;
|
import android.support.v4.media.MediaBrowserCompat;
|
||||||
|
@ -28,10 +27,8 @@ import com.muqingbfq.fragment.bfq_db;
|
||||||
import com.muqingbfq.mq.gj;
|
import com.muqingbfq.mq.gj;
|
||||||
|
|
||||||
public class home extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener {
|
public class home extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener {
|
||||||
@SuppressLint("StaticFieldLeak")
|
public Toolbar toolbar;
|
||||||
public static Toolbar toolbar;
|
|
||||||
public static AppCompatActivity appCompatActivity;
|
public static AppCompatActivity appCompatActivity;
|
||||||
|
|
||||||
@SuppressLint("CommitTransaction")
|
@SuppressLint("CommitTransaction")
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
|
@ -57,21 +54,10 @@ public class home extends AppCompatActivity implements NavigationView.OnNavigati
|
||||||
item.setTitle(spannableString);
|
item.setTitle(spannableString);
|
||||||
}
|
}
|
||||||
new com.muqingbfq.fragment.sz(this, chb.getHeaderView(0));
|
new com.muqingbfq.fragment.sz(this, chb.getHeaderView(0));
|
||||||
|
|
||||||
db = new bfq_db();
|
|
||||||
getSupportFragmentManager().beginTransaction()
|
getSupportFragmentManager().beginTransaction()
|
||||||
.add(R.id.bfq_db, db).commit();
|
.add(R.id.bfq_db, new bfq_db()).commit();
|
||||||
mediaBrowser = new MediaBrowserCompat(this,
|
mediaBrowser = new MediaBrowserCompat(this,
|
||||||
new ComponentName(this, bfqkz.class), connectionCallbacks, null);
|
new ComponentName(this, bfqkz.class), new MediaBrowserCompat.ConnectionCallback() {
|
||||||
mediaBrowser.connect();
|
|
||||||
} catch (Exception e) {
|
|
||||||
gj.sc(e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private MediaBrowserCompat mediaBrowser;
|
|
||||||
private final MediaBrowserCompat.ConnectionCallback connectionCallbacks =
|
|
||||||
new MediaBrowserCompat.ConnectionCallback() {
|
|
||||||
@Override
|
@Override
|
||||||
public void onConnected() {
|
public void onConnected() {
|
||||||
// 连接成功后执行的操作
|
// 连接成功后执行的操作
|
||||||
|
@ -97,10 +83,14 @@ public class home extends AppCompatActivity implements NavigationView.OnNavigati
|
||||||
// 连接失败时执行的操作
|
// 连接失败时执行的操作
|
||||||
// gj.ts(home.this,"shibai");
|
// gj.ts(home.this,"shibai");
|
||||||
}
|
}
|
||||||
};
|
}, null);
|
||||||
|
mediaBrowser.connect();
|
||||||
|
} catch (Exception e) {
|
||||||
|
gj.sc(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@SuppressLint("StaticFieldLeak")
|
MediaBrowserCompat mediaBrowser;
|
||||||
public static bfq_db db;
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onPause() {
|
protected void onPause() {
|
||||||
|
@ -117,24 +107,8 @@ public class home extends AppCompatActivity implements NavigationView.OnNavigati
|
||||||
@Override
|
@Override
|
||||||
protected void onDestroy() {
|
protected void onDestroy() {
|
||||||
super.onDestroy();
|
super.onDestroy();
|
||||||
mediaBrowser.disconnect();
|
// mediaBrowser.disconnect();
|
||||||
}
|
}
|
||||||
@Override
|
|
||||||
public void onResume() {
|
|
||||||
super.onResume();
|
|
||||||
setVolumeControlStream(AudioManager.STREAM_MUSIC);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onStop() {
|
|
||||||
super.onStop();
|
|
||||||
// (see "stay in sync with the MediaSession")
|
|
||||||
if (MediaControllerCompat.getMediaController(home.this) != null) {
|
|
||||||
// MediaControllerCompat.getMediaController(home.this).unregisterCallback(controllerCallback);
|
|
||||||
}
|
|
||||||
mediaBrowser.disconnect();
|
|
||||||
}
|
|
||||||
|
|
||||||
private long time;
|
private long time;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -7,13 +7,10 @@ import android.content.SharedPreferences;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
import android.os.Looper;
|
import android.os.Looper;
|
||||||
|
|
||||||
import com.muqingbfq.mq.MyExceptionHandler;
|
|
||||||
import com.muqingbfq.mq.wj;
|
import com.muqingbfq.mq.wj;
|
||||||
import com.muqingbfq.mq.wl;
|
import com.muqingbfq.mq.wl;
|
||||||
|
|
||||||
public class main extends Application {
|
public class main extends Application {
|
||||||
@SuppressLint("StaticFieldLeak")
|
|
||||||
public static Context context;
|
|
||||||
public static Handler handler = new Handler(Looper.getMainLooper());
|
public static Handler handler = new Handler(Looper.getMainLooper());
|
||||||
public static String api = "http://139.196.224.229:3000";
|
public static String api = "http://139.196.224.229:3000";
|
||||||
public static String http = "http://139.196.224.229/muqing";
|
public static String http = "http://139.196.224.229/muqing";
|
||||||
|
@ -27,7 +24,6 @@ public class main extends Application {
|
||||||
@Override
|
@Override
|
||||||
public void onCreate() {
|
public void onCreate() {
|
||||||
super.onCreate();
|
super.onCreate();
|
||||||
context = this;
|
|
||||||
new wj(this);
|
new wj(this);
|
||||||
sp = getSharedPreferences("Set_up", MODE_PRIVATE);
|
sp = getSharedPreferences("Set_up", MODE_PRIVATE);
|
||||||
edit = sp.edit();
|
edit = sp.edit();
|
||||||
|
@ -61,6 +57,5 @@ public class main extends Application {
|
||||||
edit.commit();
|
edit.commit();
|
||||||
}
|
}
|
||||||
// 创建全局异常处理器实例 设置全局异常处理器
|
// 创建全局异常处理器实例 设置全局异常处理器
|
||||||
Thread.setDefaultUncaughtExceptionHandler(new MyExceptionHandler(this));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,32 +0,0 @@
|
||||||
package com.muqingbfq.mq;
|
|
||||||
|
|
||||||
import android.content.Context;
|
|
||||||
import android.util.Log;
|
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
|
||||||
|
|
||||||
import com.muqingbfq.yc;
|
|
||||||
|
|
||||||
public class MyExceptionHandler implements Thread.UncaughtExceptionHandler {
|
|
||||||
public static Throwable throwable;
|
|
||||||
private Context mContext;
|
|
||||||
public MyExceptionHandler(Context context) {
|
|
||||||
mContext = context;
|
|
||||||
}
|
|
||||||
@Override
|
|
||||||
public void uncaughtException(@NonNull Thread thread, @NonNull Throwable throwable) {
|
|
||||||
// 将异常信息打印到日志中
|
|
||||||
MyExceptionHandler.throwable = throwable;
|
|
||||||
String TAG = "MyExceptionHandler";
|
|
||||||
Log.e(TAG, "UncaughtException: ", throwable);
|
|
||||||
// 在这里执行生成错误报告的逻辑,例如将错误信息保存到文件或发送给服务器
|
|
||||||
// 可以使用第三方库,如ACRA、Bugsnag等,或者自行实现错误报告的处理逻辑
|
|
||||||
// 生成错误报告的逻辑
|
|
||||||
// 发送 Intent 重启应用
|
|
||||||
yc.start(mContext, throwable);
|
|
||||||
// 这里可以进行一些其他的操作,例如记录错误日志、弹出错误提示框等
|
|
||||||
// 终止程序
|
|
||||||
// android.os.Process.killProcess(android.os.Process.myPid());
|
|
||||||
// System.exit(0);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -15,6 +15,7 @@ import android.content.pm.PackageManager;
|
||||||
import android.graphics.Bitmap;
|
import android.graphics.Bitmap;
|
||||||
import android.graphics.BitmapFactory;
|
import android.graphics.BitmapFactory;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
|
import android.support.v4.media.MediaMetadataCompat;
|
||||||
import android.support.v4.media.session.PlaybackStateCompat;
|
import android.support.v4.media.session.PlaybackStateCompat;
|
||||||
|
|
||||||
import androidx.core.app.ActivityCompat;
|
import androidx.core.app.ActivityCompat;
|
||||||
|
@ -24,7 +25,11 @@ import androidx.media.session.MediaButtonReceiver;
|
||||||
import com.muqingbfq.MyButtonClickReceiver;
|
import com.muqingbfq.MyButtonClickReceiver;
|
||||||
import com.muqingbfq.R;
|
import com.muqingbfq.R;
|
||||||
import com.muqingbfq.bfq;
|
import com.muqingbfq.bfq;
|
||||||
|
import com.muqingbfq.bfq_an;
|
||||||
import com.muqingbfq.bfqkz;
|
import com.muqingbfq.bfqkz;
|
||||||
|
import com.muqingbfq.fragment.bfq_db;
|
||||||
|
import com.muqingbfq.fragment.mp3;
|
||||||
|
import com.muqingbfq.home;
|
||||||
import com.muqingbfq.start;
|
import com.muqingbfq.start;
|
||||||
import com.muqingbfq.yc;
|
import com.muqingbfq.yc;
|
||||||
|
|
||||||
|
@ -49,25 +54,21 @@ public class NotificationManagerCompat {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// 适配12.0及以上
|
// 适配12.0及以上
|
||||||
int flag;
|
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
|
|
||||||
flag = PendingIntent.FLAG_IMMUTABLE;
|
|
||||||
} else {
|
|
||||||
flag = PendingIntent.FLAG_UPDATE_CURRENT;
|
|
||||||
}
|
|
||||||
// 设置启动的程序,如果存在则找出,否则新的启动
|
// 设置启动的程序,如果存在则找出,否则新的启动
|
||||||
Intent intent = new Intent(Intent.ACTION_MAIN);
|
Intent intent = new Intent(Intent.ACTION_MAIN);
|
||||||
intent.addCategory(Intent.CATEGORY_LAUNCHER);
|
intent.addCategory(Intent.CATEGORY_LAUNCHER);
|
||||||
intent.setComponent(new ComponentName(context, start.class));//用ComponentName得到class对象
|
intent.setComponent(new ComponentName(context, start.class));//用ComponentName得到class对象
|
||||||
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
|
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
|
||||||
| Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);// 关键的一步,设置启动模式,两种情况
|
| Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);// 关键的一步,设置启动模式,两种情况
|
||||||
|
PendingIntent pendingIntent = getActivity(context, intent);
|
||||||
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, flag);
|
// PendingIntent.getActivity(context, 0, intent, flag);
|
||||||
pendingIntent_kg = pendingIntent(context, new Intent(context, MyButtonClickReceiver.class).
|
Intent my = new Intent(context, MyButtonClickReceiver.class);
|
||||||
|
pendingIntent_kg = getBroadcast(context, my.
|
||||||
setAction("kg"));
|
setAction("kg"));
|
||||||
pendingIntent_syq = pendingIntent(context, new Intent(context, MyButtonClickReceiver.class).
|
pendingIntent_syq = getBroadcast(context, my.
|
||||||
setAction("syq"));
|
setAction("syq"));
|
||||||
pendingIntent_xyq = pendingIntent(context, new Intent(context, MyButtonClickReceiver.class).
|
pendingIntent_xyq = getBroadcast(context, my.
|
||||||
setAction("xyq"));
|
setAction("xyq"));
|
||||||
// 取消操作的PendingIntent
|
// 取消操作的PendingIntent
|
||||||
// 取消操作的PendingIntent
|
// 取消操作的PendingIntent
|
||||||
|
@ -79,7 +80,7 @@ public class NotificationManagerCompat {
|
||||||
.setMediaSession(bfqkz.mSession.getSessionToken())
|
.setMediaSession(bfqkz.mSession.getSessionToken())
|
||||||
.setShowCancelButton(true)
|
.setShowCancelButton(true)
|
||||||
.setCancelButtonIntent(cancelIntent);
|
.setCancelButtonIntent(cancelIntent);
|
||||||
//
|
|
||||||
notificationBuilder = getNotificationBuilder(context)
|
notificationBuilder = getNotificationBuilder(context)
|
||||||
.setSmallIcon(R.drawable.icon)
|
.setSmallIcon(R.drawable.icon)
|
||||||
.setContentTitle(name).setContentText(zz)
|
.setContentTitle(name).setContentText(zz)
|
||||||
|
@ -124,7 +125,7 @@ public class NotificationManagerCompat {
|
||||||
notificationManager.notify(1, notificationBuilder.build());
|
notificationManager.notify(1, notificationBuilder.build());
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressLint({"MissingPermission", "RestrictedApi"})
|
@SuppressLint({"MissingPermission", "RestrictedApi", "NotifyDataSetChanged"})
|
||||||
public void setBitmap(Bitmap bitmap) {
|
public void setBitmap(Bitmap bitmap) {
|
||||||
bfq.bitmap = bitmap;
|
bfq.bitmap = bitmap;
|
||||||
if (bitmap == null) {
|
if (bitmap == null) {
|
||||||
|
@ -140,6 +141,7 @@ public class NotificationManagerCompat {
|
||||||
if (bfq.tx != null) {
|
if (bfq.tx != null) {
|
||||||
bfq.tx.setImageBitmap(bitmap);
|
bfq.tx.setImageBitmap(bitmap);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private NotificationCompat.Builder getNotificationBuilder(Context context) {
|
private NotificationCompat.Builder getNotificationBuilder(Context context) {
|
||||||
|
@ -153,12 +155,29 @@ public class NotificationManagerCompat {
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressLint("UnspecifiedImmutableFlag")
|
@SuppressLint("UnspecifiedImmutableFlag")
|
||||||
private PendingIntent pendingIntent(Context context, Intent intent) {
|
private PendingIntent getBroadcast(Context context, Intent intent) {
|
||||||
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.S) {
|
int flag;
|
||||||
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
|
||||||
|
flag = PendingIntent.FLAG_IMMUTABLE;
|
||||||
|
} else {
|
||||||
|
flag = PendingIntent.FLAG_UPDATE_CURRENT;
|
||||||
|
}
|
||||||
|
return PendingIntent.getBroadcast(context, 0, intent, flag);
|
||||||
|
/* if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.S) {
|
||||||
return PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_IMMUTABLE);
|
return PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_IMMUTABLE);
|
||||||
} else {
|
} else {
|
||||||
return PendingIntent.getBroadcast(context, 0, intent, 0);
|
return PendingIntent.getBroadcast(context, 0, intent, 0);
|
||||||
|
}*/
|
||||||
|
}
|
||||||
|
@SuppressLint("UnspecifiedImmutableFlag")
|
||||||
|
private PendingIntent getActivity(Context context, Intent intent) {
|
||||||
|
int flag;
|
||||||
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
|
||||||
|
flag = PendingIntent.FLAG_IMMUTABLE;
|
||||||
|
} else {
|
||||||
|
flag = PendingIntent.FLAG_UPDATE_CURRENT;
|
||||||
}
|
}
|
||||||
|
return PendingIntent.getActivity(context, 0, intent, flag);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -66,7 +66,7 @@ public class gj {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (SocketException e) {
|
} catch (SocketException e) {
|
||||||
yc.start(main.context, e);
|
yc.start(e);
|
||||||
}
|
}
|
||||||
return false; // 默认为流量网络
|
return false; // 默认为流量网络
|
||||||
}
|
}
|
||||||
|
|
|
@ -148,25 +148,24 @@ public class start extends AppCompatActivity {
|
||||||
startApp();
|
startApp();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void startApp() {
|
private void startApp() {
|
||||||
|
SharedPreferences theme = getSharedPreferences("theme", MODE_PRIVATE);
|
||||||
SharedPreferences theme = getSharedPreferences("theme", MODE_PRIVATE);
|
@SuppressLint("CommitPrefEdits") SharedPreferences.Editor edit = theme.edit();
|
||||||
@SuppressLint("CommitPrefEdits") SharedPreferences.Editor edit = theme.edit();
|
int i = theme.getInt("theme", AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM);
|
||||||
int i = theme.getInt("theme", AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM);
|
if (i == -1) {
|
||||||
if (i == -1) {
|
edit.putInt("theme", AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM);
|
||||||
edit.putInt("theme", AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM);
|
}
|
||||||
}
|
AppCompatDelegate.setDefaultNightMode(i);
|
||||||
AppCompatDelegate.setDefaultNightMode(i);
|
|
||||||
|
wl.Cookie = main.sp.getString(main.Cookie, "");
|
||||||
wl.Cookie = main.sp.getString(main.Cookie, "");
|
if (wl.Cookie.equals("")) {
|
||||||
if (wl.Cookie.equals("")) {
|
new visitor(this, home);
|
||||||
new visitor(this, home);
|
} else {
|
||||||
} else {
|
if (wj.filesdri == null) {
|
||||||
if (wj.filesdri == null) {
|
new wj(this);
|
||||||
new wj(this);
|
}
|
||||||
|
startActivity(home);
|
||||||
|
finish();
|
||||||
}
|
}
|
||||||
startActivity(home);
|
|
||||||
finish();
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
|
@ -24,7 +24,7 @@ public class yc extends AppCompatActivity {
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void start(Object e) {
|
public static void start(Object e) {
|
||||||
start(main.context, e);
|
start(home.appCompatActivity, e);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void start(Context context, Object e) {
|
public static void start(Context context, Object e) {
|
||||||
|
|
|
@ -19,11 +19,10 @@
|
||||||
<androidx.appcompat.widget.Toolbar
|
<androidx.appcompat.widget.Toolbar
|
||||||
android:id="@+id/toolbar"
|
android:id="@+id/toolbar"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content">
|
||||||
app:title="@string/Playlist">
|
|
||||||
</androidx.appcompat.widget.Toolbar>
|
</androidx.appcompat.widget.Toolbar>
|
||||||
<androidx.fragment.app.FragmentContainerView
|
<androidx.fragment.app.FragmentContainerView
|
||||||
android:id="@+id/hdct"
|
android:id="@+id/gd"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="0dp"
|
android:layout_height="0dp"
|
||||||
android:layout_weight="1"
|
android:layout_weight="1"
|
||||||
|
@ -34,7 +33,6 @@
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content" />
|
android:layout_height="wrap_content" />
|
||||||
</androidx.appcompat.widget.LinearLayoutCompat>
|
</androidx.appcompat.widget.LinearLayoutCompat>
|
||||||
|
|
||||||
<com.google.android.material.navigation.NavigationView
|
<com.google.android.material.navigation.NavigationView
|
||||||
android:id="@+id/chb"
|
android:id="@+id/chb"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
|
@ -45,5 +43,4 @@
|
||||||
app:menu="@menu/sz"
|
app:menu="@menu/sz"
|
||||||
tools:ignore="VisualLintBounds" />
|
tools:ignore="VisualLintBounds" />
|
||||||
</androidx.drawerlayout.widget.DrawerLayout>
|
</androidx.drawerlayout.widget.DrawerLayout>
|
||||||
|
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
|
@ -22,8 +22,8 @@
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:id="@+id/img_logo"
|
android:id="@+id/img_logo"
|
||||||
android:layout_width="200dp"
|
android:layout_width="150dp"
|
||||||
android:layout_height="200dp"
|
android:layout_height="150dp"
|
||||||
android:layout_marginTop="10dp"
|
android:layout_marginTop="10dp"
|
||||||
android:src="@drawable/icon" />
|
android:src="@drawable/icon" />
|
||||||
|
|
||||||
|
|
|
@ -33,27 +33,17 @@
|
||||||
android:text="@string/zz" />
|
android:text="@string/zz" />
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
</androidx.appcompat.widget.Toolbar>
|
</androidx.appcompat.widget.Toolbar>
|
||||||
<RelativeLayout
|
<LinearLayout
|
||||||
android:id="@+id/layout"
|
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="0dp"
|
android:layout_height="0dp"
|
||||||
android:layout_weight="1">
|
android:layout_weight="1"
|
||||||
<com.dirror.lyricviewx.LyricViewX
|
android:orientation="horizontal">
|
||||||
android:id="@+id/gc"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
app:lrcCurrentTextColor="@color/text"
|
|
||||||
app:lrcNormalTextSize="16sp"
|
|
||||||
app:lrcPadding="16dp"
|
|
||||||
app:lrcTextSize="20sp"
|
|
||||||
app:lrcLabel="@string/app_name"
|
|
||||||
app:lrcTimelineTextColor="@color/text_tm"
|
|
||||||
tools:ignore="MissingConstraints" />
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:id="@+id/kp1"
|
android:id="@+id/kp1"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:gravity="center">
|
android:gravity="center"
|
||||||
|
android:layout_weight="1">
|
||||||
<com.google.android.material.card.MaterialCardView
|
<com.google.android.material.card.MaterialCardView
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
@ -67,7 +57,19 @@
|
||||||
android:src="@drawable/icon" />
|
android:src="@drawable/icon" />
|
||||||
</com.google.android.material.card.MaterialCardView>
|
</com.google.android.material.card.MaterialCardView>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
</RelativeLayout>
|
<com.dirror.lyricviewx.LyricViewX
|
||||||
|
android:id="@+id/gc"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:layout_weight="1"
|
||||||
|
app:lrcCurrentTextColor="@color/text"
|
||||||
|
app:lrcLabel="@string/app_name"
|
||||||
|
app:lrcNormalTextSize="16sp"
|
||||||
|
app:lrcPadding="16dp"
|
||||||
|
app:lrcTextSize="20sp"
|
||||||
|
app:lrcTimelineTextColor="@color/text_tm"
|
||||||
|
tools:ignore="MissingConstraints" />
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
|
|
Loading…
Reference in New Issue
Block a user