Android Oreo対応についてまとめ

# Android Oreoとは
公式：https://developer.android.com/about/versions/oreo/android-8.0.html
Android 8.0のこと。
何故Oreoかというと、毎versionでお菓子の愛称を付けているから。
6.0はMarshmallow、7.0はNougatだった。

# 機能的な変更点
参考：[Android 8.0 アンドロイドO(Oreo)の新機能・変更点・不具合まとめ](http://androidlover.net/android8)

* 壁紙にあわせてテーマが暗くなったり、明るさが自動的に変わる
* Bluetooth接続機器のバッテリー残量表示
* 新しくなった電源メニューオプション
    * 電源ボタン長押し＞電源メニューが画面の端からカード形式でスライドin。指のすぐ隣に「電源を切る」/「再起動」が表示されるので実用的に。
* 設定画面の上部を占める検索アイコンがトップバー全体を覆い、目立つように
* イースターエッグ？とやらがoreoになったらしい（Androidの隠し機能だそう）
* 『スリープ中にWiFiをオンにする』オプションが削除
* 通知の数に関係なく、1秒に1つの通知アラートのみ受信可能に
* 「バッテリーを使用しているアプリケーション」通知が削除可能に
* クイック設定パネルが半透明に
* ダウンロードマネージャーの仕様変更
* スマートテキスト選択機能
etc

# 開発面での変更点
公式：https://developer.android.com/about/versions/oreo/android-8.0-changes.html?hl=ja

詳細は公式に譲るとして、以下に大体の部分のみ抜粋。

| 項目 | 概要 |
|:--|:--|
| バックグラウンド実行制限 |  アプリがアクティブなコンポーネントのないキャッシュ状態になると、そのアプリが保持しているすべての WakeLock が解放される。 また、フォアグラウンドで実行されていないアプリの特定の動作はシステムによって制限される。 |
| Android のバックグラウンド位置情報の制限 | バックグラウンド アプリが最新の位置情報を受信する頻度が低下。 |
| アプリ ショートカット | com.android.launcher.action.INSTALL_SHORTCUTが無効化されたので代わりにrequestPinShortcutを使う。など |
| ロケールと国際化 | 一部のメソッドでLocale.getDefault() の代わりに Locale.getDefault(Category.DISPLAY) を使用するようになった。など |
| 警告ウィンドウ | TYPE_APPLICATION_OVERLAYウィンドウ タイプを使用しての警告ウィンドウ表示がデフォルトになった。など |
| 入力とナビゲーション | Viewのフォーカス時のデフォルト設定が新しくなった。など |
| ウェブフォーム自動入力 | Webview周りのいくつかのメソッドに変更点あり |
| ネットワークと HTTP(S) 接続 | 通信処理周りでいくつかの変更点あり |
| Bluetooth | ScanRecord.getBytes() メソッドで取得するデータ長に対しての変更点あり |
| シームレスな接続 | Wi-Fi設定に関する変更点あり |
| セキュリティ | SSLv3の非対応化など |
| プライバシー | 識別子の処理方法に変更点あり。また、net.hostname システム プロパティのクエリ結果が null に |
| コレクションの処理 | AbstractCollection.removeAll() と AbstractCollection.retainAll() は、必ず NullPointerException をスローするようになった。 |


# Oreo対応系記事
[Oreo対応した話](https://qiita.com/nbhd/items/6151cde75d7f9929bcc4)
[Android 8.0 - Wi-Fi Awareメモ](https://qiita.com/popondeli/items/743a912ca66e90dbe2c6)
[Android 8.0新機能:「通知ドット」を実装してみた](https://qiita.com/wakwak/items/ca4804c245e636e55d44)
[AndroidOのfindViewByIdの仕様変更](https://qiita.com/kubode/items/c7fe9c091fdf5533d36b)
[【Android O】通知チャンネルを国際化する](https://qiita.com/Shiozawa/items/095e77d38fc00681e898)
[Android Oの挙動の変更点 抄訳と共にポイントをまとめてみた (Oをtargetにするアプリでの挙動変更編)](https://qiita.com/hidenorly/items/20658adb9b1dc347256e)
[Android Oの挙動の変更点 抄訳と共にポイントをまとめてみた (全API level targetでの変更点編)](https://qiita.com/hidenorly/items/3512d42811e1ca37a7de)
[Android 8.0変更点:マニフェスト ファイルからブロードキャスト レシーバーを削除せよ](https://qiita.com/wakwak/items/eaaaa27881fa79dfc180)
[Android 8 Oreo でホームショートカットを作成する](https://qiita.com/takeo-asai/items/dbed0fb62d6fb51a9730)
[Android O 向けビルド（targetSdkVersion>=26）で Canvas.setBitmap() の挙動が変わった件](https://qiita.com/Shiozawa/items/f5e59ef13e117c844c3e)
[Android 8.0調査メモ：ブロードキャストがもう自由に使えない件](https://qiita.com/YusukeIwaki/items/7f56acb05a9ec22b04a2)
[Android 8 (Oreo) の EditText をタップするとクラッシュする](https://qiita.com/notona/items/865dcca7aa5a2686b9f9)
[Target SDK Version 26に上げる時につまづいたこと(スライド)](http://sssslide.com/speakerdeck.com/katsukinakatani/target-sdk-version-26nishang-gerushi-nitumaduitakoto)
[Android O の Notification Channel をいじってみた](https://www.gaprot.jp/pickup/old-tips/android-o/notification-channel)
[Androidの通知チャンネルの振る舞いをプロジェクトのtargetSDKVersionを変えて少し試してみた](http://woshidan.hatenablog.com/entry/2017/08/23/083000)
[AndroidでViewを他のアプリの上に表示する (APIバージョン別 対応方法まとめ)](https://qiita.com/tokisuzume/items/466fc9dc471013e4b6dc)
[Android 8.0 Oreo 通知対応チェックリスト](https://qiita.com/mstssk/items/14e1b94be6c52af3a0a6)

# その他のリンク
[[Android]Androidバージョンと対応するAPIレベル/コードネーム一覧](http://to-developer.com/blog/?p=2154)
[AndroidのAPI LevelとVersionの対応関係一覧表](https://feel-log.net/android/api-level/)