My Octopress Blog

A blogging framework for hackers.

Texet TB-138

| Comments

Приобрел все таки эл. книгу с большим 8” экраном - Texet TB-138.

Выяснилось, что внутри Android 2.3.1. Да еще и процессор быстрый: Rockchip rk2918 (Cortex A8, 1Ghz)

Не знаю по каким причинам производитель не пишет, что внутри Android и можно ставить свои приложения, но я бы сразу купил и не нужно было бы изучать firmware update с сайта призводителя

Вот параметры процессора, разделы flash и состояние памяти:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
cat /proc/cpuinfo 
Processor   : ARMv7 Processor rev 2 (v7l) 
BogoMIPS   : 101.94 
Features   : swp half thumb fastmult vfp edsp thumbee neon vfpv3 
...
/sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq 
102000 
/sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_min_freq 
102000 
/sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq 
1008000 
...
df 
Filesystem             Size   Used   Free   Blksize 
/dev                    87M    32K    87M   4096 
/mnt/asec               87M     0K    87M   4096 
/mnt/obb                87M     0K    87M   4096 
/system                178M   178M    31K   1024 
/data                  503M    51M   451M   4096 
/cache                 112M     5M   106M   1024 
/mnt/storage             2G    18M     2G   8192 

cat /proc/meminfo 
MemTotal:         178836 kB 
MemFree:           11908 kB 
Buffers:            3288 kB 
Cached:            53212 kB
...

Режим отладки включается легко: нужно нажать на кнопку MENU в Настройки/Информация. И после этого можно подключаться по adb.

Вот как это работает (код в com.caration.setting.Setting из EinkSettings.apk):

1
2
3
4
5
6
7
8
9
10
11
12
13
    d.setOnKeyListener(new android.content.DialogInterface.OnKeyListener() {
        public boolean onKey(DialogInterface dialoginterface, int i, KeyEvent keyevent) {
            if(i == 82 && keyevent.getAction() == 0)
                try {
                    if(android.provider.Settings.Secure.getInt(getContentResolver(), "adb_enabled") == 0)
                        android.provider.Settings.Secure.putInt(getContentResolver(), "adb_enabled", 1);
                    else
                        android.provider.Settings.Secure.putInt(getContentResolver(), "adb_enabled", 0);
                } catch(android.provider.Settings.SettingNotFoundException settingnotfoundexception) {
                    settingnotfoundexception.printStackTrace();
                }
            return false;
        }

Для тех у кого linux, ниже правило для udev:

1
SUBSYSTEM=="usb", ATTR{idVendor}=="0bb4", MODE="0666"

Штатные программы имеют некоторые недостатки:

  • djvu: растягивает страницу непропорционально
  • pdf: если не масштабировать, то читать можно (масштаб при переходе со страницы на страницу не запоминает)
  • fb2, epub - отсутсвие переносов
  • html - только малую часть текста показывает (например, сохраняем статью с habr.ru и читаем только пару обзацев, остальное пропадает)

Все это решается установкой дополнительных программ. Т.к. не все программы расчитаны на eink-дисплеи, то нужно выбирать их или адаптировать. К тому же, у Texet TB-138 нет сенсорного ввода.

Чтобы программа полноценно работала на этой книжке нужно: * поддержка боковых клавиш листания (вперед - KEYCODE_NUMPAD_0, назад - KEYCODE_NUM_LOCK) * полное обновление экрана, для очистки от мусора с предыдущих страниц - View.requestEpdMode(1) перед View.invalidate() * навигация по меню с помощью клавиш

Привожу список программ, которые работают на Texet TB-138:

OrionReader

  • pdf, djvu
  • очень быстро работает
  • можно легко обрезать края, чтобы размер текста становился больше

Новая версия 0.42.3 уже поддерживает Texet tb-138!

AlReader

  • fb2, epub и др.

Патч для включения боковых клавиш:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
AlReader3Activity.onKeyDown(int keyCode, KeyEvent event) добавляется 
        if(keyCode==20) keyCode = 144; // клавиша 'влево' для KEYCODE_DPAD_DOWN 
        if(keyCode==19) keyCode = 143; // клавиша 'вправо' для KEYCODE_DPAD_UP 
diff -Nur AlReader3Activity-orig/smali/com/neverland/alr/AlReader3Activity.smali AlReader3Activity/smali/com/neverland/alr/AlReader3Activity.smali 
--- AlReader3Activity-orig/smali/com/neverland/alr/AlReader3Activity.smali    2013-08-08 15:24:19.000000000 +0400 
+++ AlReader3Activity/smali/com/neverland/alr/AlReader3Activity.smali   2013-08-09 02:10:07.503478159 +0400 
@@ -8594,6 +8594,18 @@ 
     .parameter "event" 
  
     .prologue 
+ 
+    const/16 v4, 0x90 
+    if-ne p1, v4, :cond_9991 
+    const/16 p1, 0x14 
+    
+    :cond_9991 
+    const/16 v4, 0x8f 
+    if-ne p1, v4, :cond_9992 
+    const/16 p1, 0x13 
+ 
+    :cond_9992 
+ 
     .line 2990 
     invoke-virtual {p2}, Landroid/view/KeyEvent;->getEventTime()J 

Для полного обновления экрана, нужно вызвать какой-нибудь диалог. Например, нажать два раза на ‘BACK’ клавишу.

CoolReader

  • fb2, epub, html и др.

Боковые клавиши: в /mnt/sdcard/.cr3/cr3.ini добавить

1
2
app.key.action.press.144=PAGE_DOWN 
app.key.action.press.143=PAGE_UP 

Включить WHITE-тему, чтобы не было подложки:

1
app.ui.theme=WHITE 

К сожалению, CoolReader сам рисует меню и главный экран с помощью TextView и ImageView. Поэтому клавиши в этих элементах не работают.

FBReader

  • fb2, epub, html

Обновление экрана

Патч для полного обновления экрана

Клавиши

Согласно документации в файле /sdcard/Books/keymap.xml прописываем

1
2
3
4
5
6
<?xml version="1.0" encoding="UTF-8"?>
<keymap>
  <binding key="144" action="nextPage"/>     <!-- KEYCODE_NUMPAD_0 -->
  <binding key="143" action="previousPage"/> <!-- KEYCODE_NUM_LOCK -->
  <binding key="151" action="epdRefresh"/>   <!-- KEYCODE_NUMPAD_7 -->
</keymap>

Кроме боковых будет работать и клавиша “Виртуальная клавиатура”, при нажатии на которую выполнится полное обновление экрана.

Дополнительные настройки

Фон = Сплошной текст, Перелистывание страниц/Анимация = Выключить анимацию

Comments