意見交換
テーマ、知りたいこと
Googleにより廃止が決定したメソッドを使用するとどうなるのか知りたい。
背景、状況
現在作っているAndroidアプリでWifiManagerのstartScanメソッドを使用したいと思っています。
しかし、startScanメソッドは今後廃止される予定です。
廃止された場合にそのstartScanメソッドを使用するとどうなるのでしょうか?
おそらく最新のAndroidでのみエラーが発生してアプリが落ちたり固まったりすると予想しているのですが違うでしょうか?
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
下記のような質問は推奨されていません。
- 質問になっていない投稿
- スパムや攻撃的な表現を用いた投稿
適切な質問に修正を依頼しましょう。
回答6件
#1
総合スコア28309
投稿2023/03/21 00:22
廃止されるのであれば、そもそもそれを使用したアプリが起動できなかったり審査に通らなかったりすることもあります。
質問では「最新の」と限定されていますが、過去の OS でもセキュリティアップデートによって使えなくなる可能性は無くはないです。
使ってはいけないものを使ったらどうなるかというのはあまり考える必要はなくて、改修できるものであれば改修すべきです。
#2
総合スコア28309
投稿2023/03/21 00:22
廃止されるのであれば、そもそもそれを使用したアプリが起動できなかったり審査に通らなかったりすることもあります。
質問では「最新の」と限定されていますが、過去の OS でもセキュリティアップデートによって使えなくなる可能性は無くはないです。
使ってはいけないものを使ったらどうなるかというのはあまり考える必要はなくて、改修できるものであれば改修すべきです。
Zuishinさん
ご回答ありがとうございます。
とても参考になります。
Androidが一定頻度でWifiスキャンした時に得たWifi情報はいつでも取得できます。
しかしアプリにはユーザーの任意のタイミングでWifiスキャンさせた時に得たWifi情報を取得させたいです。
それができるのは非推奨のstartScanメソッドだけのようです...
下記のような回答は推奨されていません。
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
このような回答には修正を依頼しましょう。
#3
総合スコア28309
投稿2023/03/21 02:12
非推奨にしたということは、それをすることで何か問題があるということなので、そもそもそれをさせてはいけないということでしょう。
下記のような回答は推奨されていません。
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
このような回答には修正を依頼しましょう。
#4
総合スコア11352
投稿2023/03/21 03:51
編集2023/03/21 03:52どうなるかは明言されていなかったと思います。なので予想した所で意味はありません。
要は、公式には無いことにするからそれでも使うならサポートは自分でやってね…でしょう。
下記のような回答は推奨されていません。
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
このような回答には修正を依頼しましょう。
#5
総合スコア170
投稿2023/03/24 07:57
※意見交換タグがついていますし、私はそっち系の専門家ではないので雑談半分で読んで下さい。
とりあえず公式ドキュメントには以下の記述があります。
https://developer.android.com/guide/topics/connectivity/wifi-scan?hl=ja
Android8.0(APIレベル26)では、権限と許可されるWi-Fiスキャンの
頻度に関する制限が導入されました。
ネットワークパフォーマンス、セキュリティ、電池寿命を改善するため、
Android9(APIレベル28)では権限に関する要件を厳格にし、
Wi-Fiスキャンの頻度をさらに制限しました。
Android9:
各フォアグラウンドアプリは、2分間の間に4回スキャンを実行できます。
これにより、短時間で大量のスキャンを行うことができます。
Android10以降:
Android9と同じスロットリング制限が適用されます。
たぶん昔どこかのアホな子が100ミリ秒に1回スキャンループみたいなのを
実装して、無意味に凄い勢いで電池がなくなったりスマホで目玉焼きを
焼いたりしたりしたのでしょう。
ある意味、現状はアプリ側で細かいフールプルーフを実装しなくても
OSレベルで実装されているので、助かるんじゃないでしょうか。
Android的には「2分で4回スキャン」を「短時間で大量」と思っている
らしいので、今後これより増えることはないでしょう。
(んなアホなことあるかいな?と思って英語表示にしてみましたが
「This allows for a burst of scans in a short time.」と書いて
ありました。burstっていうくらいなら1秒間に16回くらい押させてほしい。)
まあ実際問題、その端末が使用できる周波数ぜんぶ順番にスキャンする
のって、そこそこ時間かかりそうですよね。(とだけ書いて終わろうと
思ったのですが、一応ついでに調べてみましたがよくわかりませんでした。)
自分で試していないのでイマドキの機種でどうなのかはわかりませんが、
2011年の記事では、802.11b/gで「全チャンネルの(パッシブ)スキャンには
1.5ms-数ms程度かかってしまう」と書いてありました。(pdfファイル)
https://ipsj.ixsq.nii.ac.jp/ej/?action=repository_uri&item_id=73015&file_id=1&file_no=1
私はそっちの業界の人ではないので、ここ10年程度で何か劇的に仕組み
レベルで改善されているのかもしれませんがとりあえず知らないので
上記の延長でお話をすると、現状ではさらに5GHz帯が実装されていて、
今後使用できる周波数帯が増えていくので、全チャンネルスキャンに
かかる時間は増加するでしょう。これはアクセスポイント側のビーコンが
100msec間隔というあたりに律速されるはずなので、端末のCPUが高速化
しても改善しないと思います。(もっというとビーコン間隔を詰めると
電波の使用効率が悪くなるので、こちらも改善(?)されるとは考えにくい
です。あ、でも端末にたくさんアンテナとチップ乗せたら並列稼働
できるのかな。)
ちなみにAndroid9でstartScanの実験をしている方がおられましたので
引用しておきます。
https://ymgsapo.com/2022/12/19/androidwifi-scan/
Android9以降でフォアグラウンドアプリの場合、2分間で4回までの
スキャンが許されている。
試しに5回目のスキャンをしてみたら、scanFailureが呼び出された。
「スキャン連打できるUI用意したけどどうせ内部で無効にされてるので
ほとんど意味ない」と「連打するUIがなくて不満」の二択ですかね…。
(あれ?前者の方がマシなのでは…。)
というわけで、非推奨のメソッドは代替メソッドが用意されたりする
こともあると思いますが、startScanについては上記の理由でたぶん
廃止されて終了になると予想できます。
メソッドがほんとうに廃止されてしまった後は、既出ですがいろいろ
不具合が発生すると思います。
「アプリが落ちたり固まったり」はエラーハンドリングの実装次第
じゃないですかね。(そのうちビルドもできなくなるような気は
しますが。)
下記のような回答は推奨されていません。
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
このような回答には修正を依頼しましょう。
#6
総合スコア170
投稿2023/03/24 07:57
※意見交換タグがついていますし、私はそっち系の専門家ではないので雑談半分で読んで下さい。
とりあえず公式ドキュメントには以下の記述があります。
https://developer.android.com/guide/topics/connectivity/wifi-scan?hl=ja
Android8.0(APIレベル26)では、権限と許可されるWi-Fiスキャンの
頻度に関する制限が導入されました。
ネットワークパフォーマンス、セキュリティ、電池寿命を改善するため、
Android9(APIレベル28)では権限に関する要件を厳格にし、
Wi-Fiスキャンの頻度をさらに制限しました。
Android9:
各フォアグラウンドアプリは、2分間の間に4回スキャンを実行できます。
これにより、短時間で大量のスキャンを行うことができます。
Android10以降:
Android9と同じスロットリング制限が適用されます。
たぶん昔どこかのアホな子が100ミリ秒に1回スキャンループみたいなのを
実装して、無意味に凄い勢いで電池がなくなったりスマホで目玉焼きを
焼いたりしたりしたのでしょう。
ある意味、現状はアプリ側で細かいフールプルーフを実装しなくても
OSレベルで実装されているので、助かるんじゃないでしょうか。
Android的には「2分で4回スキャン」を「短時間で大量」と思っている
らしいので、今後これより増えることはないでしょう。
(んなアホなことあるかいな?と思って英語表示にしてみましたが
「This allows for a burst of scans in a short time.」と書いて
ありました。burstっていうくらいなら1秒間に16回くらい押させてほしい。)
まあ実際問題、その端末が使用できる周波数ぜんぶ順番にスキャンする
のって、そこそこ時間かかりそうですよね。(とだけ書いて終わろうと
思ったのですが、一応ついでに調べてみましたがよくわかりませんでした。)
自分で試していないのでイマドキの機種でどうなのかはわかりませんが、
2011年の記事では、802.11b/gで「全チャンネルの(パッシブ)スキャンには
1.5ms-数ms程度かかってしまう」と書いてありました。(pdfファイル)
https://ipsj.ixsq.nii.ac.jp/ej/?action=repository_uri&item_id=73015&file_id=1&file_no=1
私はそっちの業界の人ではないので、ここ10年程度で何か劇的に仕組み
レベルで改善されているのかもしれませんがとりあえず知らないので
上記の延長でお話をすると、現状ではさらに5GHz帯が実装されていて、
今後使用できる周波数帯が増えていくので、全チャンネルスキャンに
かかる時間は増加するでしょう。これはアクセスポイント側のビーコンが
100msec間隔というあたりに律速されるはずなので、端末のCPUが高速化
しても改善しないと思います。(もっというとビーコン間隔を詰めると
電波の使用効率が悪くなるので、こちらも改善(?)されるとは考えにくい
です。あ、でも端末にたくさんアンテナとチップ乗せたら並列稼働
できるのかな。)
ちなみにAndroid9でstartScanの実験をしている方がおられましたので
引用しておきます。
https://ymgsapo.com/2022/12/19/androidwifi-scan/
Android9以降でフォアグラウンドアプリの場合、2分間で4回までの
スキャンが許されている。
試しに5回目のスキャンをしてみたら、scanFailureが呼び出された。
「スキャン連打できるUI用意したけどどうせ内部で無効にされてるので
ほとんど意味ない」と「連打するUIがなくて不満」の二択ですかね…。
(あれ?前者の方がマシなのでは…。)
というわけで、非推奨のメソッドは代替メソッドが用意されたりする
こともあると思いますが、startScanについては上記の理由でたぶん
廃止されて終了になると予想できます。
メソッドがほんとうに廃止されてしまった後は、既出ですがいろいろ
不具合が発生すると思います。
「アプリが落ちたり固まったり」はエラーハンドリングの実装次第
じゃないですかね。(そのうちビルドもできなくなるような気は
しますが。)
なるほど、いつ廃止されるかも廃止後にどうなるかもAndroid開発元であるGoogleさんの気分次第なんですね。
bleScannerのstartScanは非推奨になっていないのにwifimanagerのstartScanだけ非推奨になっているということは後者で何か悪いことをした人がいたのかもしれないですね。
いや、wifimanagerのstartScanの場合は頻繁にWifi情報を取得することによってユーザーの位置情報を常に把握しようとした輩がいたのかも...
下記のような回答は推奨されていません。
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
このような回答には修正を依頼しましょう。
関連した質問
Q&A
受付中
asp.net core で input type="file" の選択内容を保持する
回答3
クリップ1
更新
2023/05/31
意見交換
受付中
Javaの抽象クラスとインタフェースの使い分け
回答3
クリップ1
更新
2023/06/01
意見交換
クローズ
ブラウザーバックを効かないようにする方法はありますか。
回答23
クリップ6
更新
2023/05/13
Q&A
解決済
spring bootで新規登録機能を作成したい。
回答1
クリップ0
更新
2023/06/02
意見交換
クローズ
プログラミングの設計が分からない
回答24
クリップ11
更新
2023/04/17
Q&A
解決済
Ajaxでフォームの内容をPHPに渡してPDFを作成し文字列を引き渡し、受け取った文字列をjavascriptでPDF化したい
回答2
クリップ0
更新
2023/06/02
意見交換
クローズ
AIによる影響について
回答30
クリップ5
更新
2023/05/28
同じタグがついた質問を見る
Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。
Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。
Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。