Skip to content

Commit

Permalink
优化项目结构 (#24) (#25)
Browse files Browse the repository at this point in the history
  • Loading branch information
VictorModi authored Feb 16, 2025
1 parent 725b996 commit 82ea426
Show file tree
Hide file tree
Showing 36 changed files with 228 additions and 205 deletions.
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

0 comments on commit 82ea426

Please sign in to comment.