質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.12%

navigator.vibrateのAndroidでの動作について

受付中

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 779

Tama_

score 4

monacaのチュートリアルにあるおみくじアプリを作ってみました。

見ていたのはコレ
http://www.slideshare.net/AsialCorp/monaca-2

最後のほう(p76)にバイブ機能をつかう例として「navigator.vibrate(2000)」という記述があるのですが
Monacaデバッガーを使い実機テストしてみたところ、どうしてもAndroidで振動しません。
iPhoneでは振動しています。

調べたこと

https://developer.mozilla.org/ja/docs/Web/API/Navigator/vibrate
ここで確認したところ
「Beginning in version 60, this method requires a user gesture. Otherwise it returns false.」
ということでした。
なにかユーザーが動作をすればいいのかと思いましたが、元々このチュートリアルはクリック後にこの関数を使用しています。

知りたいこと

何をすればAndroidで「navigator.vibrate」が機能するようになりますか?

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

0

新規プロジェクトでおみくじアプリテンプレート使って作成し、

<!DOCTYPE HTML>
<html>
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
    <meta http-equiv="Content-Security-Policy" content="default-src * data: gap: https://ssl.gstatic.com; style-src * 'unsafe-inline'; script-src * 'unsafe-inline' 'unsafe-eval'">
    <script src="components/loader.js"></script>
    <link rel="stylesheet" href="components/loader.css">

    <script>
        function omikuji (){
            var dice = Math.floor(Math.random() * 3);
            var image_name;
            if (dice == 0) {
                image_name = "omikuji-daikichi.png";
            } else if  (dice == 1) {
                image_name = "omikuji-chuukichi.png";
            } else {
                image_name = "omikuji-hei.png";
            }

            navigator.vibrate(2000);

            document.getElementById("saisyo").style["display"] = "none";
            document.getElementById("kekka").src = "images/" + image_name;
            document.getElementById("kekka").style["display"] = "inline";
            document.getElementById("button").src = "images/omikuji-btn-yarinaosu.png";
        }
    </script>
    <style>
        body {
            background-image: url("images/omikuji-bg.png");
            background-size: cover;
            background-repeat: no-repeat;
            margin: 0;
            padding: 0;
            text-align: center;
        }
        #hako {
            margin-top: 15%;
            margin-left : 0;
            margin-right : 0;
        }

        img {
           width: 70%; 
        }

        #bottombar {
            position: absolute;
            bottom: 30px;
            width: 100%;
        }
    </style>
</head>
<body>
    <div id="hako">
        <img id="saisyo" src="images/omikuji-box.png" />
        <img id="kekka" style="display : none;"/>
    </div>
    <div id="bottombar">
        <img id="button" src="images/omikuji-btn-hajimeru.png" onclick="omikuji()">
    </div>
</body>
</html>


でAndroidでMonacaDebuggerから起動したらバイブレーションしたのですが、機種依存なのかなぁ
(私のはHUAWEI P20 liteです)

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/01/16 00:02

    回答ありがとうございます。
    頂いたソースそのまま貼り付けて動かしてみましたがやっぱりだめでした。
    ためしに
    console.log(navigator.vibrate(2000));
    とやってみたら、バイブしていないのにtrueとでています。

    またためしに他の人がつくったやつと思い
    https://qiita.com/kurehajime/items/27c98de56fd06f93d0b8
    こちらをChromeで開いてみましたがやっぱりダメでした。

    機種依存なのか、なにか設定がひつようなのか…

    自分の機種かいてなかったのでここに書きます
    XperiaのXZ1 Compact(Android8.0)です

    キャンセル

  • 2019/01/16 11:47

    https://bugs.chromium.org/p/chromium/issues/detail?id=372431
    動かないっていう報告もあるようですね・・・
    とはいえ、FireFoxでは動いたっていう記事もあるようです・・・お役に立てなくて申し訳ない

    キャンセル

  • 2019/01/22 00:26

    遅くなってすみません。
    その後上のリンクにある他の方が作ったプログラムをFirefoxで表示してみました。
    するとバイブを許可するかというよなダイアログがでて、許可すると動作するようになりました。
    Chromeやmonacaでつくったアプリではもちろんそんなダイアログは出ません。
    出し方がわかればいいのですが、見つけわれませんでした。
    こうなるともう、こちらから手を出せるところはないですかね…

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.12%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる