web viewでのtalkback自動再生について

337 views
Skip to first unread message

Y.Isobe

unread,
Oct 10, 2014, 12:24:17 AM10/10/14
to android-g...@googlegroups.com
こんにちは。

今、アプリ内でHPを表示させるため、web viewを使っているのですが
talkback機能をonにして、HPを表示させたときに自動的に最初のテキストを
読み上げてくれなくて困っています。

タッチすれば読み上げますし、標準のブラウザであれば同じHPでも最初の
テキストを読み上げてくれます。

何かweb view の設定があるのでしょうか。

色々と試しているのですが、解決策が見つかりません。
もし何かおわかりの方がいらっしゃいましたらご教授頂けないでしょうか。
よろしくお願い致します。

Shigeo Mutoh

unread,
Oct 10, 2014, 2:20:23 AM10/10/14
to android-g...@googlegroups.com
武藤です。

いろいろと試されたとありますが、どんなことを試されましたか?

私がまず疑うのは、web viewでページを開いた直後にどこにフォーカスが
あたっているのか? です。単純にどこにもフォーカスが当たっていない
ようでしたら、フォーカスを無理やり当ててやることを考えます。
その挙動が標準ブラウザと異なるのは、そもそも中身が別物だという
ことで、実装依存(それぞれの設計思想に依存)だと思います。

ただ、ちょっと気になるのは、body内のなんでもいいから先頭要素なのか、
text要素なのか、たぶん悩む気はします。

あまり役に立たない情報ですがとりあえず。

Y.Isobe

unread,
Oct 10, 2014, 2:53:30 AM10/10/14
to android-g...@googlegroups.com
武藤 様

さっそく、アドバイスありがとうございます。

確かに開いた直後はどこにもフォーカスが当たっていない状態です。
(通常はテキスト部分=読み上げる部分が橙色の枠で囲まれて
いますよね)

まず最初に試したのが、JSを使わない様にする事でした。
OFFにすると、画面をタッチすれば読み上げるようになりました。
(JS ONの時はタッチしても枠が現れず、読み上げもされませんでした)

また念のためと思い、読み上げエンジンによる違いがないか調べる為に、
標準の "Googleテキスト読み上げエンジン” の他に ”KDDILABS N2 TTL" 、
”DTalker TTS Demo" を入れて見ましたが、結果は同じでした。

他の人が作られたアプリでは、ちゃんと自動再生(読み上げ)している
ので、やはりフォーカスを強制的に当てるように設定しているという
事でしょうか?
※その場合の当て方がまだ判っていないのですが。。。



2014年10月10日金曜日 15時20分23秒 UTC+9 TM:

Shigeo Mutoh

unread,
Oct 10, 2014, 4:07:05 AM10/10/14
to android-g...@googlegroups.com
武藤です。

すみません、これ以上は進言することがなく、私自身が実験しないと
分からないです。

他のアプリでは動いているのでしたら、何か方法があるのでしょうが、
focusを当てているのかどうかは私は知りません。

ちなみに、focusを当てるには、JSで
document.getElementById("myelement").focus();
とするとか、
document.body[0].focus();
とするかは何をしたいかによりますが、とにかくそういうJSを
実行すれば良いわけです。
# たぶん後者で成功するケースは稀。空のtext要素が一般的かな)

これをweb viewでどうやって実行するかはまずはご自分でお調べに
なってみてください。onloadのタイミングで実行すれば良いです。

では。

Y.Isobe

unread,
Oct 10, 2014, 4:42:45 AM10/10/14
to android-g...@googlegroups.com
武藤 様


こちらでも何とかフォーカスを当てるところまでは、実装出来ました。
ただ、自動で読み上げてはくれませんが。。。

一からWeb View関連を見直してみます。

色々ありがとうございました!


2014年10月10日金曜日 17時07分05秒 UTC+9 TM:

Jun Shiozawa

unread,
Oct 10, 2014, 6:47:36 AM10/10/14
to android-g...@googlegroups.com
多分、仕様です。
解決策は無いと思います。
iPhone版Safariなどweb-kit系モバイル環境、
つまりAndroid WebView
Android 4.0までの標準ブラウザ
Chrome for Androidなど(Blink系も含む)
これらはonclickなどのユーザー側からのディスプレイのタップ等のアクションが無いと
onclickなどのイベントハンドラで呼び出されたメソッドの処理内から
loadをしなければ読み込みを開始しません。
onclickなどのイベントハンドラで呼び出されたメソッドの処理内から
loadをした後は
onclickなどをしなくてもplayできます。
バクではなくApple社による意図的な仕様です。
web-kit系モバイル環境、
つまりAndroid WebViewもApple社による意図的な仕様と同様の挙動をします。
Android WebViewなりAndroid 4.0までの標準ブラウザ
Chrome for Androidなど(Blink系も含む)がユーザーの明示的なアクション(onclickなど)無しに
音声や動画をWebページ側で勝手に自動的にloadできてしまうとパケット代が青天井に跳ね上がってしまうため
Apple社は意図的にこのような仕様にしているのです。

参考Webサイト





2014年10月10日金曜日 13時24分17秒 UTC+9 Y.Isobe:

Jun Shiozawa

unread,
Oct 10, 2014, 7:23:25 AM10/10/14
to android-g...@googlegroups.com
ごめんなさい

loadをした後は
onclickなどをしなくてもplayできます。

↑これは僕の間違いです。

参考Webサイトにもあるように
onclickなどのイベントハンドラで呼び出されたメソッドの処理内から
loadをした後の
playは
setTimeout等のタイマー処理内で行わなければなりません。
あるいは別の参考WebサイトのIBMのサイトで記載されているように
オーディオ・スプライトのテクニックを使用してもよいかもしれません。

いずれにせよ仕様によりonloadによる自動再生はできず
onclickなどによる
ユーザー側からのディスプレイのタップなどの
アクションを経由しなければloadできず再生もできないのです。


2014年10月10日金曜日 19時47分36秒 UTC+9 Jun Shiozawa:

Jun Shiozawa

unread,
Oct 10, 2014, 7:53:26 AM10/10/14
to android-g...@googlegroups.com
>標準のブラウザであれば同じHPでも最初の
>テキストを読み上げてくれます。

>他の人が作られたアプリでは、ちゃんと自動再生(読み上げ)している
>ので、やはりフォーカスを強制的に当てるように設定しているという
>事でしょうか?

ごめんなさい
talkback機能ということなので
根本から問題の本質が違うかも

Android WebViewと
Android 4.3までの標準ブラウザ or Android 4.4以降のChrome for Androidで
挙動が微妙に違うので
Android WebViewでのtalkback機能がダメかも。
Android 4.1以降の標準ブラウザ or Chrome for AndroidでWebViewが動くのに
(Android 4.1以降の標準ブラウザでは設定でWebGLをON)
(Chrome for Androidではアドレスバーにchrome://flags)
Android WebViewではWebGLがダメなのと同様な理由で
Android OSの設定からtalkbackを設定しても
Android WebViewでのtalkback機能が標準ブラウザと同様な挙動で動作してくれないのではないかと・・・

>他の人が作られたアプリでは、ちゃんと自動再生(読み上げ)している

何かうまくやっているのかな?

2014年10月10日金曜日 20時23分25秒 UTC+9 Jun Shiozawa:

Jun Shiozawa

unread,
Oct 10, 2014, 7:55:12 AM10/10/14
to android-g...@googlegroups.com
誤Android 4.1以降の標準ブラウザ or Chrome for AndroidでWebViewが動くのに
正Android 4.1以降の標準ブラウザ or Chrome for AndroidでWebGLが動くのに

2014年10月10日金曜日 20時53分26秒 UTC+9 Jun Shiozawa:

Jun Shiozawa

unread,
Oct 10, 2014, 8:09:41 AM10/10/14
to android-g...@googlegroups.com
お役に立つか分かりませんが
WebViewのTalkBack関連の参考Webサイトを集めてみました。



2014年10月10日金曜日 20時55分12秒 UTC+9 Jun Shiozawa:

Jun Shiozawa

unread,
Oct 10, 2014, 8:17:30 AM10/10/14
to android-g...@googlegroups.com
あと、ここも

http://developer.android.com/guide/topics/ui/accessibility/apps.html#custom-views

2014年10月10日金曜日 21時09分41秒 UTC+9 Jun Shiozawa:

Jun Shiozawa

unread,
Oct 10, 2014, 9:00:26 AM10/10/14
to android-g...@googlegroups.com
先ほど紹介いたしました



No, the WebView is not accessible from the built-in TalkBack service, at least as of Android version 4.0. 

と記載されており
まあ、そういうことです。
この投稿者により同投稿内で代替策が提示されているようです。

Instead, blind users are instructed to use something like Mobile Accessibility for Android,


http://codefactoryglobal.com/app-store/

2014年10月10日金曜日 21時17分30秒 UTC+9 Jun Shiozawa:

Jun Shiozawa

unread,
Oct 10, 2014, 11:20:48 AM10/10/14
to android-g...@googlegroups.com
念のため意訳

No, the WebView is not accessible from the built-in TalkBack service, at least as of Android version 4.0.
少なくともAndroid4.0ではWebViewではAndroid標準搭載のTalkBackは使えないよ

Instead, blind users are instructed to use something like Mobile Accessibility for Android
その代わりに視覚障害者ユーザ向けのAndroid用のテキスト読み上げアプリがあるよ

2014年10月10日金曜日 22時00分26秒 UTC+9 Jun Shiozawa:
Reply all
Reply to author
Forward
0 new messages