ブラウザを作ってみる 2日目

なんとなくタブっぽいものが作れた
実際にはImageButtonを並べているだけ
選択したときのハイライトとか付けたい
f:id:zenu:20170217013520p:plain


画面をキャプチャするタイミングが分からん
setPictureListenerとかそれっぽい名前のリスナはObsoluteでござるとか言われるし
じゃあ代替の関数なんやねん、書いといてくれや

とりあえずonPageFinishedでキャプチャしてもまだ描画終わってないのか、真っ白になることが多い
ひとまずタブ切り替え時に更新するようにしたはいいけど・・・
Java側からJSのonloadイベント差し込んでJAVA側にload完了を知らせる?
いやいやもっと簡単な方法があるはず、きっと、多分


つかJAVAラムダ式使えるよーになったとか聞いてたけどAndroid Studioは関係ないのね
Scalaか小鳥ちゃんで書いたほうが楽なんじゃないか?
構文しらんけど

ブラウザを作ってみる

AndroidでWebViewはめ込んだだけのブラウザを作ってみる
どうにも思ったようなものがない

こんだけイジる

低速SIMを使ってるからデフォで外部ファイル(js、css、画像全て)は読み込み不要
タブ化してタブの切り替えは画面下並べる
ボタンはメニューとタブを閉じるボタンのみ、画面下にしか配置しない
URL、タイトルは見ないから不要
リンク長押しで裏タブで開く
左右フリックでタブ移動、onclickのあるところではタブ移動しないほうがいい
新規タブにOperaみたいなSpeedDial
target=_blankは無視して同タブで開く
viewportのwidthは無視して端末幅で表示
viewportのuser-scalable=noは無視
ユーザー定義のcssを使いたい
URLベースのフィルタを入れとく


とりあえず画面にこれ以上Widgetは置かない
f:id:zenu:20170215225816j:plain

無線&タッチセンサー

無線とタッチセンサー化したくてとりあえずAdafruit Feather 32u4 Bluefruit LEを購入
サンプルいじってBluetoothのキーボードにするのはすぐできた
超簡単(^-^)
Amazon.co.jp: Adafruit Feather 32u4 Bluefruit LE: DIY・工具

ただ、↑にはピンヘッダついてないし最終的にはブレッドボードなしで行きたいから
とりあえずArduinoにタッチセンサーをつないでみた
https://www.amazon.co.jp/gp/product/B00YXGAC5U

まず繋ぐ線がどれか分かんねぇ(-_-;
UNOのサンプルはあるけどMicroだとうまく動かない
めんどくさいから、もうピンヘッダはんだ付けしたけどすごい雑い
結局SCLとSDAとかいうのがArduinoの機種ごとに違うからデータシートよーみんさいって事だった
知らんし( ノД`)
f:id:zenu:20170122221537j:plain

タッチセンサーのピンヘッダ取るのだるいし、もう一個買ったろかいな、安いし・・・

IME設定

日本語入力が続くとイライラする
Enterキーで確定したらとっとと半角入力に戻してほしい
昔は窓使いの憂鬱とかでやってたけど、なんとIME設定でできるじゃない!
f:id:zenu:20170115233814p:plain
この通り変換中のEnterキーをIMEオン/オフにすれば全確定してIMEオフになる


次に打つとき意図しない全角入力にならず超快適
文節確定は変換/無変換キーに割り当てとく
なんのためにあるんだ?あのキー、、、邪魔だし

バイオハザード6

ラクーンシティにZをやっつける特効薬があるってレッドクイーンに教えてもらう
36時間後くらいに人類を滅ぼす攻撃が始まるとかで急いでいく
2回くらい罠にハマってラクーンシティにつく
またクレアにあってハイブに潜入
アリスは実はクローンだったと分かり、オリジナルのアリス婆さんから子供の頃の記憶をもらう
ウェスカーがハイブで指揮をとるけど、オリジナルのアリスがアンブレラの役員だから要はロボコップ1と同じオチになる
Z特効薬をバラマキ、空気感染で広める


相変わらずストーリーはヒドイ
5のラストはなかったことにされ、つながりはほぼ無い
ただのジョボビッチ家のプロモーションビデオ

超高速!参勤交代

参勤交代から戻ったばかりの弱小藩に、もっかい参勤交代せんかい、しかも5日でって無茶を言われる
行列組まんでダッシュで参勤交代をすることにする
山道を抜けるのに城の天井に潜んでた忍びをやとう
殿様は怪我したから馬で別行動したら、指名手配されてて、かくまってくれた飯盛女と逃げる
江戸についたら隠密がワイヤーアクションでビョーンって襲ってくるから倒して無事参勤交代完了
悪巧みしてた老中は将軍にばれて謹慎処分をくらう


参勤交代とすれ違うのに飛脚なら走り抜けてもいい、とかそんな制度知らんがな
なるほど感はなく、えっそうなん?って

データグローブ試作 その2

手袋の指先にポッケを作りセンサーをぶっさして多少見栄えはよくなった
センサーがよくずれるけどなんとかならんもんか・・・
今はマジックテープで縛って両面テープでくっつけている、でもよくずれる

ソフト側はC言語ならかじったことあるのでめちゃ簡単に作ったった
一言でいうとザ・手抜き
動いたのでHello Worldしてみた
www.youtube.com
実は10回以上リテイクしている、20回から先は数えてない
撮影用に手を挙げて入力するのしんどい


手をぶらりとさせれば入力できるけど、キーアサインまだ覚えきれない
キーアサインはなんかのソースコードをアルファベットの出現頻度見て折り曲げやすい配置から順に設定していった
数字やモデファイヤキーはまだない、つか指がたらん

#define A0_LIMIT 833 // 親指
#define A1_LIMIT 880 // 人差し指
#define A2_LIMIT 858 // 中指
#define A3_LIMIT 870 // 薬指
#define A4_LIMIT 890 // 小指

#define NOP B0000 // パー

uint8_t KeyStroke = NOP;
uint8_t KeyAssign[32] = {
  NOP, // ○○○○ ○
  'e', // ○○○○ ●
  'a', // ○○○● ○
  'd', // ○○○● ●
  'o', // ○○●○ ○
  'w', // ○○●○ ●
  'k', // ○○●● ○
  NOP, // ○○●● ●
  'u', // ○●○○ ○
  'x', // ○●○○ ●
  'g', // ○●○● ○
  NOP, // ○●○● ●
  'c', // ○●●○ ○
  'p', // ○●●○ ●
  't', // ○●●● ○
  'r', // ○●●● ●
  'i', // ●○○○ ○
  'n', // ●○○○ ●
  'b', // ●○○● ○
  'v', // ●○○● ●
  'j', // ●○●○ ○
  'q', // ●○●○ ●
  'y', // ●○●● ○
  NOP, // ●○●● ●
  'h', // ●●○○ ○
  'm', // ●●○○ ●
  'z', // ●●○● ○
  'f', // ●●○● ●
  's', // ●●●○ ○
  'l', // ●●●○ ●
  ' ', // ●●●● ○
  KEY_RETURN, // ●●●● ●
};

void setup()
{
  Serial.begin(9600);
  Keyboard.begin();
}

void loop()
{
  int a0 = analogRead(A0);
  int a1 = analogRead(A1);
  int a2 = analogRead(A2);
  int a3 = analogRead(A3);
  int a4 = analogRead(A4);

  int now_stroke =
    (a0 >= A0_LIMIT) |
    (a1 >= A1_LIMIT) << 1 |
    (a2 >= A2_LIMIT) << 2 |
    (a3 >= A3_LIMIT) << 3 |
    (a4 >= A4_LIMIT) << 4;

  KeyStroke |= now_stroke;
  if (now_stroke == NOP && KeyAssign[KeyStroke] != NOP)
  {
    Keyboard.press(KeyAssign[KeyStroke]);
    delay(100);
    Keyboard.releaseAll();
    KeyStroke = NOP;
  }
  else
  {
    print_finger_state(a0, a1, a2, a3, a4);
    delay(100);
  }
}

void print_finger_state(int a0, int a1, int a2, int a3, int a4)
{
  Serial.print(a4, DEC);
  Serial.write(" ");
  Serial.print(a3, DEC);
  Serial.write(" ");
  Serial.print(a2, DEC);
  Serial.write(" ");
  Serial.print(a1, DEC);
  Serial.write(" ");
  Serial.print(a0, DEC);
  Serial.write(" ");
  Serial.println(KeyStroke, BIN);
}