mirror of
https://github.com/areteruhiro/LIME-beta-hiro.git
synced 2025-02-05 21:11:39 +09:00
コードの変更
This commit is contained in:
parent
b8c1ecec15
commit
841fe49287
@ -9,8 +9,8 @@ android {
|
|||||||
defaultConfig {
|
defaultConfig {
|
||||||
minSdk 28
|
minSdk 28
|
||||||
targetSdk 35
|
targetSdk 35
|
||||||
versionCode 116155
|
versionCode 116156
|
||||||
versionName "1.16.15d"
|
versionName "1.16.15e"
|
||||||
multiDexEnabled false
|
multiDexEnabled false
|
||||||
proguardFiles += 'proguard-rules.pro'
|
proguardFiles += 'proguard-rules.pro'
|
||||||
buildConfigField 'String', 'HOOK_TARGET_VERSION', '"141910383"'
|
buildConfigField 'String', 'HOOK_TARGET_VERSION', '"141910383"'
|
||||||
|
@ -43,6 +43,7 @@ public class RingTone implements IHook {
|
|||||||
Constants.RESPONSE_HOOK.methodName,
|
Constants.RESPONSE_HOOK.methodName,
|
||||||
new XC_MethodHook() {
|
new XC_MethodHook() {
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void afterHookedMethod(MethodHookParam param) throws Throwable {
|
protected void afterHookedMethod(MethodHookParam param) throws Throwable {
|
||||||
String paramValue = param.args[1].toString();
|
String paramValue = param.args[1].toString();
|
||||||
@ -74,53 +75,36 @@ public class RingTone implements IHook {
|
|||||||
|
|
||||||
if (paramValue.contains("type:NOTIFIED_RECEIVED_CALL,") && !isPlaying) {
|
if (paramValue.contains("type:NOTIFIED_RECEIVED_CALL,") && !isPlaying) {
|
||||||
if (context != null) {
|
if (context != null) {
|
||||||
// MediaPlayerが初期化されているか確認
|
|
||||||
if (mediaPlayer != null) {
|
if (mediaPlayer != null) {
|
||||||
// MediaPlayerが再生中か確認
|
|
||||||
if (mediaPlayer.isPlaying()) {
|
if (mediaPlayer.isPlaying()) {
|
||||||
return; // 再生中の場合は何もしない
|
return;
|
||||||
} else {
|
} else {
|
||||||
mediaPlayer.release(); // 再生中でない場合は解放
|
mediaPlayer.release();
|
||||||
mediaPlayer = null; // MediaPlayerのインスタンスをnullに設定
|
mediaPlayer = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Uri ringtoneUri = Uri.fromFile(destFile); // コピーしたファイルのURIを取得
|
Uri ringtoneUri = Uri.fromFile(destFile);
|
||||||
mediaPlayer = MediaPlayer.create(context, ringtoneUri);
|
mediaPlayer = MediaPlayer.create(context, ringtoneUri);
|
||||||
mediaPlayer.setLooping(true); // 繰り返し再生を設定
|
mediaPlayer.setLooping(true);
|
||||||
|
|
||||||
if (mediaPlayer != null) {
|
if (mediaPlayer != null) {
|
||||||
mediaPlayer.start();
|
mediaPlayer.start();
|
||||||
isPlaying = true;
|
isPlaying = true;
|
||||||
|
|
||||||
mediaPlayer.setOnCompletionListener(mp -> {
|
mediaPlayer.setOnCompletionListener(mp -> {
|
||||||
|
isPlaying = false;
|
||||||
mp.seekTo(0);
|
mp.seekTo(0);
|
||||||
mp.start();
|
mp.start();
|
||||||
|
isPlaying = true;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (paramValue.contains("RESULT=REJECTED,")) {
|
|
||||||
if (mediaPlayer != null) {
|
|
||||||
try {
|
|
||||||
if (mediaPlayer.isPlaying()) {
|
|
||||||
mediaPlayer.stop();
|
|
||||||
}
|
|
||||||
} catch (IllegalStateException ignored) {
|
|
||||||
}
|
|
||||||
try {
|
|
||||||
mediaPlayer.release();
|
|
||||||
} catch (IllegalStateException ignored) {
|
|
||||||
|
|
||||||
} finally {
|
|
||||||
mediaPlayer = null;
|
|
||||||
isPlaying = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
});
|
}
|
||||||
|
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
Class<?> targetClass = loadPackageParam.classLoader.loadClass("com.linecorp.andromeda.audio.AudioManager");
|
Class<?> targetClass = loadPackageParam.classLoader.loadClass("com.linecorp.andromeda.audio.AudioManager");
|
||||||
@ -133,36 +117,38 @@ public class RingTone implements IHook {
|
|||||||
protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
|
protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
|
||||||
|
|
||||||
if (method.getName().equals("setServerConfig")) {
|
if (method.getName().equals("setServerConfig")) {
|
||||||
if (mediaPlayer != null && mediaPlayer.isPlaying()) {
|
if (mediaPlayer != null) {
|
||||||
mediaPlayer.stop();
|
if (mediaPlayer.isPlaying()) {
|
||||||
mediaPlayer.release(); // MediaPlayerを解放
|
mediaPlayer.stop();
|
||||||
mediaPlayer = null; // MediaPlayerのインスタンスをnullに設定
|
}
|
||||||
|
mediaPlayer.release();
|
||||||
|
mediaPlayer = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (method.getName().equals("stop")) {
|
if (method.getName().equals("stop")) {
|
||||||
if (mediaPlayer != null && mediaPlayer.isPlaying()) {
|
if (mediaPlayer != null) {
|
||||||
mediaPlayer.stop();
|
if (mediaPlayer.isPlaying()) {
|
||||||
mediaPlayer.release(); // MediaPlayerを解放
|
mediaPlayer.stop();
|
||||||
mediaPlayer = null; // MediaPlayerのインスタンスをnullに設定
|
}
|
||||||
|
mediaPlayer.release();
|
||||||
|
mediaPlayer = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (method.getName().equals("processToneEvent")) {
|
if (method.getName().equals("processToneEvent")) {
|
||||||
Object arg0 = param.args[0];
|
Object arg0 = param.args[0];
|
||||||
if (limeOptions.DialTone.checked) {
|
if (limeOptions.DialTone.checked) {
|
||||||
//Log.d("Xposed", "MuteTone is enabled. Suppressing tone event.");
|
|
||||||
param.setResult(null);
|
param.setResult(null);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (arg0.toString().contains("START")) {
|
if (arg0.toString().contains("START")) {
|
||||||
if (appContext != null) {
|
if (appContext != null) {
|
||||||
// MediaPlayerが初期化されており、再生中の場合はスキップ
|
|
||||||
if (mediaPlayer != null && mediaPlayer.isPlaying()) {
|
if (mediaPlayer != null && mediaPlayer.isPlaying()) {
|
||||||
//Log.d("Xposed", "MediaPlayer is already playing. Skipping playback.");
|
return;
|
||||||
return; // 再生中の場合は何もしない
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Context moduleContext = AndroidAppHelper.currentApplication().createPackageContext(
|
Context moduleContext = AndroidAppHelper.currentApplication().createPackageContext(
|
||||||
"io.github.hiro.lime", Context.CONTEXT_IGNORE_SECURITY);
|
"io.github.hiro.lime", Context.CONTEXT_IGNORE_SECURITY);
|
||||||
|
|
||||||
@ -171,11 +157,10 @@ public class RingTone implements IHook {
|
|||||||
|
|
||||||
File ringtoneDir = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS), "LimeBackup");
|
File ringtoneDir = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS), "LimeBackup");
|
||||||
if (!ringtoneDir.exists()) {
|
if (!ringtoneDir.exists()) {
|
||||||
ringtoneDir.mkdirs(); // ディレクトリが存在しない場合は作成
|
ringtoneDir.mkdirs();
|
||||||
}
|
}
|
||||||
File destFile = new File(ringtoneDir, resourceNameA + ".wav");
|
File destFile = new File(ringtoneDir, resourceNameA + ".wav");
|
||||||
|
|
||||||
// リソースをストリームとして読み込み、ファイルに書き込む
|
|
||||||
if (!destFile.exists()) {
|
if (!destFile.exists()) {
|
||||||
try (InputStream in = moduleContext.getResources().openRawResource(resourceIdA);
|
try (InputStream in = moduleContext.getResources().openRawResource(resourceIdA);
|
||||||
OutputStream out = new FileOutputStream(destFile)) {
|
OutputStream out = new FileOutputStream(destFile)) {
|
||||||
@ -189,17 +174,18 @@ public class RingTone implements IHook {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Uri ringtoneUri = Uri.fromFile(destFile); // コピーしたファイルのURIを取得
|
Uri ringtoneUri = Uri.fromFile(destFile);
|
||||||
mediaPlayer = MediaPlayer.create(appContext, ringtoneUri);
|
mediaPlayer = MediaPlayer.create(appContext, ringtoneUri);
|
||||||
mediaPlayer.setLooping(true); // 繰り返し再生を設定
|
mediaPlayer.setLooping(true);
|
||||||
|
|
||||||
if (mediaPlayer != null) {
|
if (mediaPlayer != null) {
|
||||||
mediaPlayer.start();
|
mediaPlayer.start();
|
||||||
} else {
|
|
||||||
return;
|
mediaPlayer.setOnCompletionListener(mp -> {
|
||||||
|
mp.seekTo(0);
|
||||||
|
mp.start();
|
||||||
|
});
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -213,10 +199,12 @@ public class RingTone implements IHook {
|
|||||||
if (method.getName().equals("ACTIVATED") && param.args != null && param.args.length > 0) {
|
if (method.getName().equals("ACTIVATED") && param.args != null && param.args.length > 0) {
|
||||||
Object arg0 = param.args[0];
|
Object arg0 = param.args[0];
|
||||||
if ("ACTIVATED".equals(arg0)) {
|
if ("ACTIVATED".equals(arg0)) {
|
||||||
if (mediaPlayer != null && mediaPlayer.isPlaying()) {
|
if (mediaPlayer != null) {
|
||||||
mediaPlayer.stop();
|
if (mediaPlayer.isPlaying()) {
|
||||||
mediaPlayer.release(); // MediaPlayerを解放
|
mediaPlayer.stop();
|
||||||
mediaPlayer = null; // MediaPlayerのインスタンスをnullに設定
|
}
|
||||||
|
mediaPlayer.release();
|
||||||
|
mediaPlayer = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user