Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

优化项目结构 #24

Merged
merged 1 commit into from
Feb 16, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
android:theme="@style/Theme.SubSettingsBase">

<service
android:name="statusbar.finder.MusicListenerService"
android:name="statusbar.finder.app.MusicListenerService"
android:enabled="true"
android:exported="true"
android:permission="android.permission.BIND_NOTIFICATION_LISTENER_SERVICE">
Expand All @@ -33,7 +33,7 @@
</service>

<activity
android:name="statusbar.finder.SettingsActivity"
android:name="statusbar.finder.app.SettingsActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
Expand All @@ -42,13 +42,13 @@
</intent-filter>
</activity>
<activity
android:name="statusbar.finder.LyricsActivity"
android:name="statusbar.finder.app.LyricsActivity"
android:theme="@style/Theme.AppCompat.DayNight.NoActionBar"
/>

<meta-data
android:name="xposedmodule"
android:value="false"/>
android:value="true"/>
<meta-data
android:name="xposeddescription"
android:value="Push lyrics to Lyrics Getter from the Internet. (Incomplete)" />
Expand Down
6 changes: 2 additions & 4 deletions app/src/main/java/cn/zhaiyifan/lyric/LyricUtils.java
Original file line number Diff line number Diff line change
@@ -1,12 +1,10 @@
package cn.zhaiyifan.lyric;

import android.media.MediaMetadata;
import android.util.Log;
import cn.zhaiyifan.lyric.model.Lyric;
import cn.zhaiyifan.lyric.model.Lyric.Sentence;
import statusbar.finder.data.LyricResult;
import statusbar.finder.data.MediaInfo;
import statusbar.finder.provider.ILrcProvider;
import statusbar.finder.data.model.LyricResult;
import statusbar.finder.data.model.MediaInfo;

import java.io.BufferedReader;
import java.io.IOException;
Expand Down
2 changes: 1 addition & 1 deletion app/src/main/java/cn/zhaiyifan/lyric/model/Lyric.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package cn.zhaiyifan.lyric.model;

import org.jetbrains.annotations.NotNull;
import statusbar.finder.data.MediaInfo;
import statusbar.finder.data.model.MediaInfo;

import java.util.ArrayList;
import java.util.Comparator;
Expand Down
1 change: 1 addition & 0 deletions app/src/main/java/statusbar/finder/CSLyricHelper.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import android.content.Context;
import android.content.Intent;
import android.util.JsonWriter;

import java.io.IOException;
import java.io.StringWriter;

Expand Down
51 changes: 23 additions & 28 deletions app/src/main/java/statusbar/finder/LrcGetter.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,32 +2,27 @@

import android.content.Context;
import android.media.MediaMetadata;
import androidx.core.util.Pair;
import cn.zhaiyifan.lyric.LyricUtils;
import cn.zhaiyifan.lyric.model.Lyric;
import com.github.houbb.opencc4j.util.ZhConverterUtil;
import com.moji4j.MojiConverter;
import com.moji4j.MojiDetector;
import statusbar.finder.data.DataOrigin;
import statusbar.finder.data.LyricResult;
import statusbar.finder.data.MediaInfo;
import statusbar.finder.livedata.LyricsResultChange;
import statusbar.finder.misc.CheckLanguageUtil;
import statusbar.finder.provider.ILrcProvider;
import statusbar.finder.provider.KugouProvider;
import statusbar.finder.provider.MusixMatchProvider;
import statusbar.finder.provider.NeteaseProvider;
import statusbar.finder.provider.QQMusicProvider;
import statusbar.finder.provider.utils.LyricSearchUtil;
import statusbar.finder.sql.ActiveManager;
import statusbar.finder.sql.OriginManager;
import statusbar.finder.sql.QueryTool;
import statusbar.finder.sql.ResManager;
import kotlin.Pair;
import statusbar.finder.app.event.LyricsResultChange;
import statusbar.finder.data.db.DatabaseHelper;
import statusbar.finder.data.model.DataOrigin;
import statusbar.finder.data.model.LyricResult;
import statusbar.finder.data.model.MediaInfo;
import statusbar.finder.data.repository.ActiveRepository;
import statusbar.finder.data.repository.LyricRepository;
import statusbar.finder.data.repository.ResRepository;
import statusbar.finder.provider.*;
import statusbar.finder.utils.CheckLanguageUtil;
import statusbar.finder.utils.LyricSearchUtil;

import java.io.IOException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Objects;

public class LrcGetter {
private static final ILrcProvider[] providers = {
Expand Down Expand Up @@ -55,12 +50,12 @@ public static Lyric getLyric(Context context, MediaInfo mediaInfo, String sysLan
return null;
}
}
Pair<LyricResult, Long> databaseResult = QueryTool.INSTANCE.getActiveLyricFromDatabase(mediaInfo, packageName);
LyricResult currentResult = databaseResult.first;
Pair<LyricResult, Long> databaseResult = LyricRepository.INSTANCE.getActiveLyricFromDatabase(mediaInfo, packageName);
LyricResult currentResult = databaseResult.getFirst();

if (currentResult == null) {
searchLyricsResultByInfo(mediaInfo, databaseResult.second, sysLang);
currentResult = QueryTool.INSTANCE.getActiveLyricFromDatabaseByOriginId(databaseResult.second);
searchLyricsResultByInfo(mediaInfo, databaseResult.getSecond(), sysLang);
currentResult = LyricRepository.INSTANCE.getActiveLyricFromDatabaseByOriginId(databaseResult.getSecond());
} else {
LyricsResultChange.Companion.getInstance().notifyResult(new LyricsResultChange.Data(mediaInfo, currentResult));
return LyricUtils.parseLyric(currentResult, mediaInfo, packageName);
Expand All @@ -73,12 +68,12 @@ public static Lyric getLyric(Context context, MediaInfo mediaInfo, String sysLan
LyricsResultChange.Companion.getInstance().notifyResult(new LyricsResultChange.Data(mediaInfo, null));
return null;
}
searchLyricsResultByInfo(hiraganaMediaInfo, databaseResult.second, sysLang);
currentResult = QueryTool.INSTANCE.getActiveLyricFromDatabaseByOriginId(databaseResult.second);
searchLyricsResultByInfo(hiraganaMediaInfo, databaseResult.getSecond(), sysLang);
currentResult = LyricRepository.INSTANCE.getActiveLyricFromDatabaseByOriginId(databaseResult.getSecond());
if (currentResult == null) {
hiraganaMediaInfo.setTitle(converter.convertRomajiToKatakana(mediaInfo.getTitle()));
searchLyricsResultByInfo(hiraganaMediaInfo, databaseResult.second, sysLang);
currentResult = QueryTool.INSTANCE.getActiveLyricFromDatabaseByOriginId(databaseResult.second);
searchLyricsResultByInfo(hiraganaMediaInfo, databaseResult.getSecond(), sysLang);
currentResult = LyricRepository.INSTANCE.getActiveLyricFromDatabaseByOriginId(databaseResult.getSecond());
}
}

Expand Down Expand Up @@ -125,7 +120,7 @@ private static void searchLyricsResultByInfo(MediaInfo mediaInfo, Long originId,
break;
}
}
ResManager.INSTANCE.insertResData(originId, lyricResult);
ResRepository.INSTANCE.insertResData(originId, lyricResult);
if (LyricSearchUtil.isLyricContent(lyricResult.getLyric())
&& (bestMatchSource == null || bestMatchDistance > lyricResult.getDistance())) {
bestMatchSource = lyricResult.getSource();
Expand All @@ -136,9 +131,9 @@ private static void searchLyricsResultByInfo(MediaInfo mediaInfo, Long originId,
}
}
if (bestMatchSource != null) {
Res bestMatchResult = ResManager.INSTANCE.getResByOriginIdAndProvider(originId, bestMatchSource);
Res bestMatchResult = ResRepository.INSTANCE.getResByOriginIdAndProvider(originId, bestMatchSource);
assert bestMatchResult != null;
ActiveManager.INSTANCE.insertActiveLog(originId, bestMatchResult.getId());
ActiveRepository.INSTANCE.insertActiveLog(originId, bestMatchResult.getId());
}
}
}
Original file line number Diff line number Diff line change
@@ -1,22 +1,19 @@
package statusbar.finder
package statusbar.finder.app

import android.annotation.SuppressLint
import android.os.Bundle
import android.view.View
import android.widget.Button
import android.widget.EditText
import android.widget.Space
import android.widget.TextView
import android.widget.Toast
import android.widget.*
import androidx.appcompat.app.AppCompatActivity
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import cn.zhaiyifan.lyric.model.Lyric
import statusbar.finder.livedata.LyricSentenceUpdate
import statusbar.finder.livedata.LyricsChange
import statusbar.finder.sql.ActiveManager
import statusbar.finder.sql.QueryTool
import statusbar.finder.sql.ResManager
import statusbar.finder.data.model.LyricItem
import statusbar.finder.R
import statusbar.finder.app.event.LyricSentenceUpdate
import statusbar.finder.app.event.LyricsChange
import statusbar.finder.data.repository.LyricRepository
import statusbar.finder.data.repository.ResRepository

/**
* LyricGetterExt - statusbar.finder
Expand Down Expand Up @@ -67,7 +64,7 @@ class LyricsActivity : AppCompatActivity() {
Toast.makeText(applicationContext, "Offset not valid", Toast.LENGTH_SHORT).show()

}
ResManager.updateResOffsetById(currentLyricResId, newOffset)
ResRepository.updateResOffsetById(currentLyricResId, newOffset)
currentLyric?.offset = newOffset
LyricsChange.getInstance().notifyResult(LyricsChange.Data(currentLyric))
Toast.makeText(applicationContext, "Updated Offset Successfully", Toast.LENGTH_SHORT).show()
Expand Down Expand Up @@ -119,7 +116,7 @@ class LyricsActivity : AppCompatActivity() {

updateSongInfo(lyric)
syncOffset(lyric)
currentLyricResId = QueryTool.getActiveResIdByLyric(lyric)!!
currentLyricResId = LyricRepository.getActiveResIdByLyric(lyric)!!
adapter.notifyDataSetChanged()
currentHighlightPos = -1
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package statusbar.finder
package statusbar.finder.app

import android.content.Context
import android.content.res.Configuration
Expand All @@ -8,10 +8,9 @@ import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.TextView
import androidx.core.content.ContextCompat
import androidx.core.view.marginBottom
import androidx.recyclerview.widget.RecyclerView
import com.google.android.material.color.MaterialColors
import statusbar.finder.data.model.LyricItem
import statusbar.finder.R

/**
* LyricGetterExt - statusbar.finder
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package statusbar.finder;
package statusbar.finder.app;

import android.annotation.SuppressLint;
import android.app.Notification;
Expand Down Expand Up @@ -31,16 +31,21 @@
import cn.lyric.getter.api.tools.Tools;
import cn.zhaiyifan.lyric.LyricUtils;
import cn.zhaiyifan.lyric.model.Lyric;
import statusbar.finder.data.MediaInfo;
import statusbar.finder.livedata.AppsListChanged;
import statusbar.finder.livedata.LyricsChange;
import statusbar.finder.livedata.LyricsResultChange;
import statusbar.finder.livedata.LyricSentenceUpdate;
import statusbar.finder.CSLyricHelper;
import statusbar.finder.LrcGetter;
import statusbar.finder.R;
import statusbar.finder.app.event.AppsListChanged;
import statusbar.finder.app.event.LyricSentenceUpdate;
import statusbar.finder.app.event.LyricsChange;
import statusbar.finder.app.event.LyricsResultChange;
import statusbar.finder.data.db.DatabaseHelper;
import statusbar.finder.data.model.MediaInfo;
import statusbar.finder.misc.Constants;

import java.util.*;

import static statusbar.finder.misc.Constants.*;
import static statusbar.finder.misc.Constants.PREFERENCE_KEY_FORCE_REPEAT;
import static statusbar.finder.misc.Constants.PREFERENCE_KEY_TRANSLATE_TYPE;

public class MusicListenerService extends NotificationListenerService {

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package statusbar.finder;
package statusbar.finder.app;

import android.annotation.SuppressLint;
import android.app.NotificationChannel;
Expand All @@ -20,6 +20,7 @@
import androidx.preference.*;
import cn.lyric.getter.api.API;
import org.jetbrains.annotations.NotNull;
import statusbar.finder.R;
import statusbar.finder.misc.Constants;

import java.util.HashMap;
Expand All @@ -34,14 +35,14 @@ public class SettingsActivity extends FragmentActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.collapsing_toolbar_base_layout);
setContentView(statusbar.finder.R.layout.collapsing_toolbar_base_layout);
if (savedInstanceState == null) {
getSupportFragmentManager()
.beginTransaction()
.replace(R.id.content_frame, new SettingsFragment())
.replace(statusbar.finder.R.id.content_frame, new SettingsFragment())
.commit();
}
Toolbar collapsingToolbar = findViewById(R.id.action_bar);
Toolbar collapsingToolbar = findViewById(statusbar.finder.R.id.action_bar);
setActionBar(collapsingToolbar);


Expand Down Expand Up @@ -135,10 +136,10 @@ public static class SettingsFragment

@Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
setPreferencesFromResource(R.xml.root_preferences, rootKey);
setPreferencesFromResource(statusbar.finder.R.xml.root_preferences, rootKey);
NotificationManagerCompat manager = NotificationManagerCompat.from(requireContext());
if (!manager.areNotificationsEnabled()) {
Toast.makeText(requireContext(), R.string.toast_get_notification_permission, Toast.LENGTH_LONG).show();
Toast.makeText(requireContext(), statusbar.finder.R.string.toast_get_notification_permission, Toast.LENGTH_LONG).show();
enableNotification(requireContext());
}
if (!isIgnoringBatteryOptimizations(requireContext())){
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package statusbar.finder.livedata
package statusbar.finder.app.event

import androidx.lifecycle.LiveData

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package statusbar.finder.livedata
package statusbar.finder.app.event

import androidx.lifecycle.LiveData

Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
package statusbar.finder.livedata
package statusbar.finder.app.event

import androidx.lifecycle.LiveData
import cn.zhaiyifan.lyric.model.Lyric
import statusbar.finder.provider.ILrcProvider

/**
* LyricGetterExt - statusbar.finder.livedata
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package statusbar.finder.livedata
package statusbar.finder.app.event

/**
* LyricGetterExt - statusbar.finder.livedata
Expand All @@ -8,9 +8,8 @@ package statusbar.finder.livedata
* @date 2025/2/8 19:57
*/
import androidx.lifecycle.LiveData
import statusbar.finder.data.LyricResult
import statusbar.finder.data.MediaInfo
import statusbar.finder.provider.ILrcProvider
import statusbar.finder.data.model.LyricResult
import statusbar.finder.data.model.MediaInfo

class LyricsResultChange private constructor() : LiveData<LyricsResultChange.Data>() {

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
package statusbar.finder
package statusbar.finder.data.db

import android.content.Context
import app.cash.sqldelight.driver.android.AndroidSqliteDriver
import statusbar.finder.LyricDatabase

/**
* LyricGetterExt - statusbar
Expand All @@ -12,15 +13,19 @@ import app.cash.sqldelight.driver.android.AndroidSqliteDriver
*/
object DatabaseHelper {
private const val DATABASE_NAME = "lyric.db"
var database: LyricDatabase? = null
private set
private lateinit var database: LyricDatabase

@Synchronized
fun init(context: Context?) {
if (database != null || context == null) {
return
}
fun init(context: Context) {
if (DatabaseHelper::database.isInitialized) return
val driver = AndroidSqliteDriver(LyricDatabase.Schema, context, DATABASE_NAME)
database = LyricDatabase(driver)
}

fun getDatabase(): LyricDatabase {
if (!DatabaseHelper::database.isInitialized) {
throw IllegalStateException("DatabaseHelper.init() must be called before using the database.")
}
return database
}
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package statusbar.finder.data
package statusbar.finder.data.model

/**
* LyricGetterExt - statusbar.finder.data
Expand Down
Loading