pull/586/head
FongMi 2 years ago
parent 661a7f90c4
commit f0f64bf7b8
  1. 59
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/SearchActivity.java
  2. 48
      app/src/leanback/java/com/fongmi/android/tv/ui/adapter/KeyboardAdapter.java
  3. 32
      app/src/leanback/java/com/fongmi/android/tv/ui/custom/CustomKeyboard.java
  4. 8
      app/src/leanback/res/drawable/ic_keyboard.xml
  5. 9
      app/src/leanback/res/layout/activity_search.xml
  6. 8
      app/src/main/java/com/fongmi/android/tv/Setting.java
  7. 21
      catvod/src/main/java/com/github/catvod/utils/Trans.java

@ -30,11 +30,11 @@ import com.fongmi.android.tv.ui.dialog.SiteDialog;
import com.fongmi.android.tv.utils.KeyUtil;
import com.fongmi.android.tv.utils.Util;
import com.github.catvod.net.OkHttp;
import com.github.catvod.utils.Trans;
import com.google.common.net.HttpHeaders;
import java.io.IOException;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.List;
import okhttp3.Call;
@ -51,59 +51,6 @@ public class SearchActivity extends BaseActivity implements WordAdapter.OnClickL
activity.startActivity(new Intent(activity, SearchActivity.class));
}
public static String convertBopomofoToPinyin(String bopomofoString) {
HashMap<String, String> bopomofoToPinyinMap = new HashMap<String, String>();
bopomofoToPinyinMap.put("ㄅ", "b");
bopomofoToPinyinMap.put("ㄆ", "p");
bopomofoToPinyinMap.put("ㄇ", "m");
bopomofoToPinyinMap.put("ㄈ", "f");
bopomofoToPinyinMap.put("ㄉ", "d");
bopomofoToPinyinMap.put("ㄊ", "t");
bopomofoToPinyinMap.put("ㄋ", "n");
bopomofoToPinyinMap.put("ㄌ", "l");
bopomofoToPinyinMap.put("ㄍ", "g");
bopomofoToPinyinMap.put("ㄎ", "k");
bopomofoToPinyinMap.put("ㄏ", "h");
bopomofoToPinyinMap.put("ㄐ", "j");
bopomofoToPinyinMap.put("ㄑ", "q");
bopomofoToPinyinMap.put("ㄒ", "x");
bopomofoToPinyinMap.put("ㄓ", "z");
bopomofoToPinyinMap.put("ㄔ", "c");
bopomofoToPinyinMap.put("ㄕ", "s");
bopomofoToPinyinMap.put("ㄖ", "r");
bopomofoToPinyinMap.put("ㄗ", "z");
bopomofoToPinyinMap.put("ㄘ", "c");
bopomofoToPinyinMap.put("ㄙ", "s");
bopomofoToPinyinMap.put("ㄚ", "a");
bopomofoToPinyinMap.put("ㄛ", "o");
bopomofoToPinyinMap.put("ㄜ", "e");
bopomofoToPinyinMap.put("ㄝ", "e"); // can also be ie
bopomofoToPinyinMap.put("ㄞ", "ai");
bopomofoToPinyinMap.put("ㄟ", "ei");
bopomofoToPinyinMap.put("ㄠ", "ao");
bopomofoToPinyinMap.put("ㄡ", "ou");
bopomofoToPinyinMap.put("ㄢ", "an");
bopomofoToPinyinMap.put("ㄣ", "en");
bopomofoToPinyinMap.put("ㄤ", "ang");
bopomofoToPinyinMap.put("ㄥ", "eng");
bopomofoToPinyinMap.put("ㄦ", "er");
bopomofoToPinyinMap.put("ㄧ", "y");
bopomofoToPinyinMap.put("ㄨ", "w");
bopomofoToPinyinMap.put("ㄩ", "yu");
StringBuilder pinyinStringBuilder = new StringBuilder();
for (char bopomofoChar : bopomofoString.toCharArray()) {
String pinyin = bopomofoToPinyinMap.get(String.valueOf(bopomofoChar));
if (pinyin != null) {
pinyinStringBuilder.append(pinyin);
} else {
// Handle characters not found in the map (e.g., tones)
pinyinStringBuilder.append(bopomofoChar); // Add the character as is
}
}
return pinyinStringBuilder.toString();
}
@Override
protected ViewBinding getBinding() {
return mBinding = ActivitySearchBinding.inflate(getLayoutInflater());
@ -168,7 +115,7 @@ public class SearchActivity extends BaseActivity implements WordAdapter.OnClickL
private void getSuggest(String text) {
mBinding.hint.setText(R.string.search_suggest);
OkHttp.newCall("https://suggest.video.iqiyi.com/?if=mobile&key=" + URLEncoder.encode(text)).enqueue(new Callback() {
OkHttp.newCall("https://suggest.video.iqiyi.com/?if=mobile&key=" + URLEncoder.encode(Trans.z2p(text))).enqueue(new Callback() {
@Override
public void onResponse(@NonNull Call call, @NonNull Response response) throws IOException {
if (mBinding.keyword.getText().toString().trim().isEmpty()) return;
@ -195,7 +142,7 @@ public class SearchActivity extends BaseActivity implements WordAdapter.OnClickL
mBinding.keyword.setSelection(mBinding.keyword.length());
Util.hideKeyboard(mBinding.keyword);
if (TextUtils.isEmpty(keyword)) return;
CollectActivity.start(this, convertBopomofoToPinyin(keyword));
CollectActivity.start(this, keyword);
App.post(() -> mRecordAdapter.add(keyword), 250);
}

@ -1,7 +1,5 @@
package com.fongmi.android.tv.ui.adapter;
import static java.util.Locale.*;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@ -20,43 +18,16 @@ import java.util.List;
public class KeyboardAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private final List<Object> enList = Arrays.asList(R.drawable.ic_keyboard_remote, R.drawable.ic_keyboard_left, R.drawable.ic_keyboard_right, R.drawable.ic_keyboard_back, R.drawable.ic_keyboard_search, R.drawable.ic_setting_home, R.drawable.ic_keyboard, "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9");
private final List<Object> twList = Arrays.asList(R.drawable.ic_keyboard_remote, R.drawable.ic_keyboard_left, R.drawable.ic_keyboard_right, R.drawable.ic_keyboard_back, R.drawable.ic_keyboard_search, R.drawable.ic_setting_home, R.drawable.ic_keyboard, "ㄅ", "ㄆ", "ㄇ", "ㄈ", "ㄉ", "ㄊ", "ㄋ", "ㄌ", "ㄍ", "ㄎ", "ㄏ", "ㄐ", "ㄑ", "ㄒ", "ㄓ", "ㄔ", "ㄕ", "ㄖ", "ㄗ", "ㄘ", "ㄙ", "ㄧ", "ㄨ", "ㄩ", "ㄚ", "ㄛ", "ㄜ", "ㄝ", "ㄞ", "ㄟ", "ㄠ", "ㄡ", "ㄢ", "ㄣ", "ㄤ", "ㄥ", "ㄦ", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9");
private final OnClickListener mListener;
private List<Object> mItems;
private List<Object> englishKeys =Arrays.asList(
R.drawable.ic_keyboard_remote
, R.drawable.ic_keyboard_left
, R.drawable.ic_keyboard_right
, R.drawable.ic_keyboard_back
, R.drawable.ic_keyboard_search
, R.drawable.ic_setting_home
, R.drawable.ic_action_zhuyin
, "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"
, "0", "1", "2", "3", "4", "5", "6", "7", "8", "9");
private List<Object> zhuYinKeys =Arrays.asList(
R.drawable.ic_keyboard_remote
, R.drawable.ic_keyboard_left
, R.drawable.ic_keyboard_right
, R.drawable.ic_keyboard_back
, R.drawable.ic_keyboard_search
, R.drawable.ic_setting_home
, R.drawable.ic_action_zhuyin
,"ㄅ", "ㄆ", "ㄇ", "ㄈ", "ㄉ", "ㄊ", "ㄋ", "ㄌ", "ㄍ", "ㄎ", "ㄏ", "ㄐ", "ㄑ", "ㄒ",
"ㄓ", "ㄔ", "ㄕ", "ㄖ", "ㄗ", "ㄘ", "ㄙ", "ㄚ", "ㄛ", "ㄜ", "ㄝ", "ㄞ", "ㄟ", "ㄠ", "ㄡ", "ㄢ", "ㄣ",
"ㄤ", "ㄥ", "ㄦ", "ㄧ", "ㄨ", "ㄩ"
, "0", "1", "2", "3", "4", "5", "6", "7", "8", "9");
public KeyboardAdapter(OnClickListener listener) {
if(Setting.getLanguage()==2){
this.mItems = zhuYinKeys;
}else{
this.mItems = englishKeys;
}
this.mItems = Setting.isZhuyin() ? twList : enList;
this.mListener = listener;
}
public interface OnClickListener {
void onTextClick(String text);
@ -66,19 +37,12 @@ public class KeyboardAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolde
boolean onLongClick(int resId);
}
public void updateKeyList(List<Object> newKeys) {
this.mItems = newKeys;
public void toggle() {
Setting.putZhuyin(!Setting.isZhuyin());
this.mItems = Setting.isZhuyin() ? twList : enList;
notifyDataSetChanged();
}
public List<Object> getEnglishKeys() {
return englishKeys;
}
public List<Object> getZhuYinKeys() {
return zhuYinKeys;
}
@Override
public int getItemViewType(int position) {
return mItems.get(position) instanceof String ? 0 : 1;

@ -1,18 +1,16 @@
package com.fongmi.android.tv.ui.custom;
import android.annotation.SuppressLint;
import com.fongmi.android.tv.R;
import com.fongmi.android.tv.Setting;
import com.fongmi.android.tv.databinding.ActivitySearchBinding;
import com.fongmi.android.tv.ui.adapter.KeyboardAdapter;
import java.util.List;
public class CustomKeyboard implements KeyboardAdapter.OnClickListener {
private final ActivitySearchBinding binding;
private final Callback callback;
private boolean useZhuYin = false;
private KeyboardAdapter keyboardAdapter;
private KeyboardAdapter adapter;
public static void init(Callback callback, ActivitySearchBinding binding) {
new CustomKeyboard(callback, binding).initView();
@ -21,16 +19,12 @@ public class CustomKeyboard implements KeyboardAdapter.OnClickListener {
public CustomKeyboard(Callback callback, ActivitySearchBinding binding) {
this.callback = callback;
this.binding = binding;
this.keyboardAdapter = new KeyboardAdapter(this);
}
private void initView() {
binding.keyboard.setHasFixedSize(true);
binding.keyboard.addItemDecoration(new SpaceItemDecoration(6, 8));
if(Setting.getLanguage()==2){
useZhuYin=true;
}
binding.keyboard.setAdapter(keyboardAdapter);
binding.keyboard.setAdapter(adapter = new KeyboardAdapter(this));
}
@Override
@ -49,14 +43,20 @@ public class CustomKeyboard implements KeyboardAdapter.OnClickListener {
StringBuilder sb = new StringBuilder(binding.keyword.getText().toString());
int cursor = binding.keyword.getSelectionStart();
switch (resId) {
case R.drawable.ic_action_zhuyin:
useZhuYin = !useZhuYin;
List<Object> newKeys = useZhuYin ? keyboardAdapter.getZhuYinKeys() : keyboardAdapter.getEnglishKeys();
keyboardAdapter.updateKeyList(newKeys);
case R.drawable.ic_keyboard:
binding.fake.requestFocus();
adapter.toggle();
binding.keyboard.postDelayed(() -> binding.keyboard.findViewHolderForLayoutPosition(6).itemView.requestFocus(), 0);
break;
case R.drawable.ic_setting_home:
callback.showDialog();
break;
case R.drawable.ic_keyboard_remote:
callback.onRemote();
break;
case R.drawable.ic_keyboard_search:
callback.onSearch();
break;
case R.drawable.ic_keyboard_left:
binding.keyword.setSelection(--cursor < 0 ? 0 : cursor);
break;
@ -69,12 +69,6 @@ public class CustomKeyboard implements KeyboardAdapter.OnClickListener {
binding.keyword.setText(sb.toString());
binding.keyword.setSelection(cursor - 1);
break;
case R.drawable.ic_keyboard_remote:
callback.onRemote();
break;
case R.drawable.ic_keyboard_search:
callback.onSearch();
break;
}
}

@ -1,10 +1,10 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="20dp"
android:height="20dp"
android:width="24dp"
android:height="24dp"
android:tint="#FFFFFF"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="@android:color/white"
android:pathData="M20,5L4,5c-1.1,0 -1.99,0.9 -1.99,2L2,17c0,1.1 0.9,2 2,2h16c1.1,0 2,-0.9 2,-2L22,7c0,-1.1 -0.9,-2 -2,-2zM11,8h2v2h-2L11,8zM11,11h2v2h-2v-2zM8,8h2v2L8,10L8,8zM8,11h2v2L8,13v-2zM7,13L5,13v-2h2v2zM7,10L5,10L5,8h2v2zM16,17L8,17v-2h8v2zM16,13h-2v-2h2v2zM16,10h-2L14,8h2v2zM19,13h-2v-2h2v2zM19,10h-2L17,8h2v2z"/>
android:fillColor="#FFFFFF"
android:pathData="M20,5L4,5c-1.1,0 -1.99,0.9 -1.99,2L2,17c0,1.1 0.9,2 2,2h16c1.1,0 2,-0.9 2,-2L22,7c0,-1.1 -0.9,-2 -2,-2zM11,8h2v2h-2L11,8zM11,11h2v2h-2v-2zM8,8h2v2L8,10L8,8zM8,11h2v2L8,13v-2zM7,13L5,13v-2h2v2zM7,10L5,10L5,8h2v2zM16,17L8,17v-2h8v2zM16,13h-2v-2h2v2zM16,10h-2L14,8h2v2zM19,13h-2v-2h2v2zM19,10h-2L17,8h2v2z" />
</vector>

@ -43,8 +43,13 @@
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_marginEnd="36dp"
android:orientation="vertical">
android:layout_marginEnd="36dp">
<View
android:id="@+id/fake"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:focusable="true" />
<com.fongmi.android.tv.ui.custom.CustomMic
android:id="@+id/mic"

@ -250,6 +250,14 @@ public class Setting {
Prefers.put("tunnel", tunnel);
}
public static boolean isZhuyin() {
return Prefers.getBoolean("zhuyin");
}
public static void putZhuyin(boolean zhuyin) {
Prefers.put("zhuyin", zhuyin);
}
public static float getThumbnail() {
return 0.3f * getQuality() + 0.4f;
}

File diff suppressed because one or more lines are too long
Loading…
Cancel
Save