20201124のAndroidに関する記事は3件です。

【Android】ObjectMetadata.setContentEncoding で文字化け【AWS】

AWS(s3)Android サンプルコードを試していたのですが、
アップロードしたファイルの文字化けで手間取ったのでメモ。

文字化けしたコード
ObjectMetadata metadata = new ObjectMetadata();
metadata.setContentType("text/plain");
metadata.setContentEncoding("UTF-8");   // "utf-8"も"UTF8"も試したけどダメ
うまくいったコード
ObjectMetadata metadata = new ObjectMetadata();
metadata.setContentType("text/plain;charset=utf-8");

setContentEncodingなんて、期待しちゃうにきまってるじゃないですか。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【Mac】Android studioのAVD Managerからエミュレーターを起動すると「unable locate to abd」となる

環境

macOS Catalina 10.15.7
Android studio 4.1.1

発生している事

AVD ManagerからエミュレーターからPixel 2 API 28 を起動すると下記のような警告が出る。
image.png

エミュレーター自体はその後起動するのだが、Debugしてもアプリが動かない。

試した事

/Users/ユーザ名/Library/Android/sdk/platform-tools 配下にあるadbへのパスを通した後、以下コマンドを叩いてみたところデバイスは表示されるようになる。
※ない場合はDownloadして設置
SDK Platform-Tools リリースノート

$ adb devices

Android Studioを再起動して再チャレンジしたが、解消されず。

よく見るとDebugした時のConsoleに以下のエラーが出ている。
当初のエラーとは因果関係はないかもしれないが、デバッグできない理由はこっちかもしれないのでこちらも合わせて要調査

FAILURE: Build failed with an exception.

* What went wrong:
Could not determine the dependencies of task ':app:compileDebugJavaWithJavac'.
> Failed to install the following Android SDK packages as some licences have not been accepted.
     build-tools;28.0.3 Android SDK Build-Tools 28.0.3
     platforms;android-29 Android SDK Platform 29
  To build this project, accept the SDK license agreements and install the missing components using the Android Studio SDK Manager.
  Alternatively, to transfer the license agreements from one workstation to another, see http://d.android.com/r/studio-ui/export-licenses.html

  Using Android SDK: /Users/onsiter/Library/Android/sdk

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 5s
Exception: Gradle task assembleDebug failed with exit code 1
  • Flutterのエラーで良くつまずく所で、以下を実行して確認するとよいらしい。 flutter doctor

以下のように表示があった。

略
[!] Android toolchain - develop for Android devices (Android SDK version 30.0.2)
    ! Some Android licenses not accepted.  To resolve this, run: flutter doctor --android-licenses
略

表示されてる通り、以下を実行。
flutter doctor --android-licenses

所々YesとNoを求められるので、全部「Y」で次へ進める。

「unable locate to abd」のエラーは解決しませんでしたが、デバッグはできるようになりました。

結果

まだ未解決
解決次第アップします。

参考URL

AndroidStudid での “Unable to locate adb” の対処法
ターミナルにadbのパスを通す(Mac)

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【モバイル】【Chrome】画面スクロール時に Resize イベントも同時に発火されるので注意する

結論

タイトルそのまま。

モバイル版の Chrome(Android, iPhone 問わず)では、画面をスクロールした際に resize イベントも同時に発火されるので、注意したい。
※Safari は不明。

挙動

挙動自体は Chrome の仕様。

スクロールした際、 Chrome の画面上部のアドレスバーの表示・非表示が切り替わる。
それにより Chrome の画面サイズが変更するため、Resize イベントが発行されるとのこと。
詳細は以下を参照。

参考

対策

画面描画時に画面サイズを格納しておき、

let width = window.innerWidth,
  height = window.innerHeight;

Resize イベント発火時に現在の画面サイズと発火前のそれを比較することで、画面サイズが変わった場合にのみイベントを発火させることができる。

if (window.innerWidth !== width || window.innerHeight !== height) {
  //Do something
}

最後に

今回開発中の Web アプリにおいて、「モバイルを傾けた際に実行したい処理」を resize イベントに仕込んだところ、画面がスクロールされた際にも発火されてしまった。
以後気をつけたい。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む