- 1. Android LibraryをGitHub ActionsでビルドしGitHub Packagesで公開する
- 2. Android Edge-to-edge入門
- 3. Delphi で Pull To Refresh
- 4. 【Android】Viewのスクリーンショットを撮影してギャラリーアプリで見れるようにする
- 5. [Android]ExoPlayer でハードウェアのデコーダーを利用しないようにする
- 6. Android で OpenCV のサンプル mixedprocessing を試す
- 7. AndroidStudioでFileInputStreamを使うときの文字化けについて
- 8. FlutterでAndroidアプリをリリースした時に解決したつまづきポイントメモ。
- 9. [ Android ] アプリアイコンを指定する方法
- 10. [Android] 画像読み込みライブラリ Coil でできることまとめ
- 11. FACTORY START UP SERVICES, PLEASE WAIT FOR POWER OFF BUTTON 問題の解決
- 12. AndroidのlogcatをTSV形式に加工するrubyスクリプト
- 13. ARCoreを使ったARアプリをエミュレータで動かす
- 14. 【Androidアプリ入門】内部ストレージに保存・読込する♪ハマった編
- 15. Android Navigation Componentによる画面遷移時のToolbar
- 16. AndroidでToggleButtonを用いてServiceを起動・終了させてみる(起動時に通知バーに表示させる)
- 17. UXデザイナーと連携する際に考慮したい事項
- 18. Android(Pixel 3) OSダウングレード手順メモ
- 19. [ Android ] HTTP通信時に発生するタイムアウトエラー処理
- 20. MediaPlayer Classを使う
Android LibraryをGitHub ActionsでビルドしGitHub Packagesで公開する
この記事は[ZOZOテクノロジーズ #1 Advent Calendar 2019](https://qiita.com/advent-calendar/2019/zozo_tech) 1日目の記事になります。
また、今年は全部で5つのAdvent Calendarが公開されています。
– [ZOZOテクノロジーズ #2 Advent Calendar 2019](https://qiita.com/advent-calendar/2019/zozo_tech2)
– [ZOZOテクノロジーズ #3 Advent Calendar 2019](https://qiita.com/advent-calendar/2019/zozo_tech3)
– [ZOZOテクノロジーズ #4 Advent Calendar 2019](https://qiita.com/advent-calendar/2019/zozo_tech4)
– [ZOZOテクノロジーズ #5 Advent Calendar 2019](https://qiita.com/advent-calendar/2019/zo
Android Edge-to-edge入門
この記事は概ね、[Gesture Navigation: Going edge-to-edge (I)](https://medium.com/androiddevelopers/gesture-navigation-going-edge-to-edge-812f62e4e83e)と[Gesture Navigation: Handling visual overlaps (II)](https://medium.com/androiddevelopers/gesture-navigation-handling-visual-overlaps-4aed565c134c)の記事に沿って書いています。
—
Android Qから新しいシステムナビゲーションが追加されました。
iOSではおなじみですが、ボタンではなくジェスチャーによって前の画面に戻ったりAndroidのホーム画面に遷移することが可能になりました。
Delphi で Pull To Refresh# PullToRefresh
Delphi で簡単に PullToRefresh しようよ~(ジョイマン風に)
## PullToRefresh とは
上から下に引っ張ると表示内容が更新される機能です。
## ListView PullToRefresh
[TListView](http://docwiki.embarcadero.com/Libraries/Rio/ja/FMX.ListView.TListView) には [PullToReflesh](http://docwiki.embarcadero.com/Libraries/Rio/ja/FMX.ListView.TListViewBase.PullToRefresh) が機能として提供されています。
PullToRefresh の所にも書いてありますが、使い方は
1. PullToRefresh プロパティを True にする
2. [OnPullRefresh](http://docwiki.embarcadero.com/Libraries/Rio/ja/FMX.ListView.TListViewB
【Android】Viewのスクリーンショットを撮影してギャラリーアプリで見れるようにする
# 背景
画面内に表示されている特定の情報を画像として保存し、後から見返せるようにしてユーザー利便性を向上させたいという要件がありました。(例えば、ゲームアプリのユーザー情報だったり、乗換案内アプリの検索結果だったり。)この記事ではこの要件の実現方法について、下記のポイントを解説いたします。
– スクリーンショットの撮影方法
– ギャラリーへの反映方法# コード解説
全てのソースコードはGithubで公開しています。
クローンして手元で動かしてみると処理の流れがイメージしやすいと思います。
https://github.com/umechanhika/playground/tree/master/android/AddScreenshotToGallery今回のポイントとなるコードは、スクリーンショットの撮影から保存までを行なっている[ScreenshotUtil.kt](https://github.com/umechanhika/playground/blob/master/android/AddScreenshotToGallery/app/src/main/jav
[Android]ExoPlayer でハードウェアのデコーダーを利用しないようにする
# はじめに
ExoPlayer ではメディアにあわせて一番良いデコーダーを再生時に自動的に選択してくれるので、
ExoPlayer を利用する時は、デコーダー周りは特に何も気にしないで良いことになっています。そのはずだったのですが 端末に搭載されるハードウェアのデコーダーの不具合?なのか
再生時に動画が途切れたり、上手くループ再生できなくなるなどの現象に遭遇しました。その時に ExoPlayer に対してはハードウェアのデコーダーを利用しないように
設定を施したのでその方法を共有したいと思います。# 動作を確認するためのサンプルアプリを作る
本記事では次のような構成のアプリを作成していると仮定して設定を進めていきます。
![Nov-29-2019 23-20-18.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/79387/0ae7c688-92ea-246a-8ce8-9dd696442c56.gif)
## ExoPlayer をインストールする
“`groovy:build
Android で OpenCV のサンプル mixedprocessing を試す
[AndroidStudio で OpenCV をインポートする](https://qiita.com/ohwada/items/71eb18296aac46f9f5ee)
の続きです。### 概要
Android 用 OpenCV には、
8個のサンプルが同封されている。そのうち mixedprocessing は、
Native API を使うサンプルサンプルです。
前回の記事で作った Android のライブラリをインポートする手法は使えないので、
アプリごとに Android 用のOpenCV をインポートしてビルドする。### tutorial-2-mixedprocessing
OpenCVの Java API と Native API の2つの方法で、
カメラからの画像を変換して、表示するサンプルです。メニューは下記の4つ
– Preview RGBA
カメラ画像をカラーで描画する
– Preview Gray
カメラ画像をグレースケールで描画する
– Canny
キャニー ( Canny) 法によりエッジを検出して描画する
– Find f
AndroidStudioでFileInputStreamを使うときの文字化けについて
実機デバッグ時に文字列をメールアプリの本文に渡したら、文章の間に文字化け記号が挟まった。
#AndroidStudioの基本的な設定
ここを見る。http://k-hiura.cocolog-nifty.com/blog/2015/07/androidstudio-b.html
##FileInputStreamで文字コードをUTF-8指定にする
文字化けするコード“`
public String readFile(String fileName){
try {
FileInputStream stream = openFileInput(fileName);
byte[] buf = new byte[1024];
stream.read(buf);
return new String(buf);
} catch (FileNotFoundException e) {
e.printStackTrace();
FlutterでAndroidアプリをリリースした時に解決したつまづきポイントメモ。
# 検証日時
2019年11月28日
# 全体的なリリースまでの流れと、本記事の概要
公式チュートリアルです。
https://flutter.dev/docs/deployment/android英文がよくわからないという場合は、Chromeで日本語翻訳にかければほぼほぼ内容わかります。対応している単語がわからないときは翻訳を切って見比べると解決します。
このチュートリアルを進める時にエラーが出た部分にフォーカスして、その解決法(自分のケースでうまくいった操作)などを共有します。
# 署名構成の部分でコピペ忘れでデバッグ版ビルドに署名していたのを解決
チュートリアル「Configure signing in gradle」の「With the signing configuration info:」の部分について
“`signingConfig signingConfigs.release“`は初期設定だと“`debug“`になっててコピペ忘れてGoogle Play Consoleアップ時に「ビルドの署名がデバッグバージョンにされてます」という趣旨のエラー
[ Android ] アプリアイコンを指定する方法
Androidでアプリのアイコンを指定する方法を調査してみた。
##指定方法
まずアイコンに使う画像ファイルを作成する。
アイコン画像は解像度に応じて以下の通りに作成する。
・MDPI 48×48
・HDPI 72×72
・XHDPI 96×96
・XXHDPI 144×144作成出来たらdrawableに入れる。
後はマニフェストファイルでアイコンを指定するだけである。
以下のようなコードを追加すればよい。~~~xml
android:icon=”@drawable/画像ファイル名”
~~~##参考サイト
[Android] 画像読み込みライブラリ Coil でできることまとめ
# Coil の良いところ
[Coil](https://coil-kt.github.io/coil/) は Kotlin コルーチンを利用した Android 用の画像読み込みライブラリです。
公式サイトにもありますが、次のような良いところがあるそうです。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/79387/b64cdc6c-ef00-1e82-f658-dc1be17c2b85.png)
| 特徴 | 内容 |
| ——- | ——- |
| 処理が早い | メモリキャッシュ、ディスクキャッシュ、画像のダウンサンプリング、
ビットマップの再利用、画像読み込みリクエストの一時停止やキャンセルなど
様々な最適化を含めているので効率がよく早い |
| サイズが軽い | CoilはPicassoとGlide、Frescoと同等の機能を持つが、
1500メソッドぐらいのライブラリでサイズが軽い |
| 簡単に使える | Kotlinの言語機能を
FACTORY START UP SERVICES, PLEASE WAIT FOR POWER OFF BUTTON 問題の解決
Xperia で 端末リセット(工場出荷状態)にした後に
「FACTORY START UP SERVICES, PLEASE WAIT FOR POWER OFF BUTTON」
と連続で表示される問題(とそれに続いて起こるあれこれ)の解決方法(の一つ)他の情報でどうしても解決しなかったがadbコマンドでパッケージを無効化することで解決できた。
対象のAndroid端末以外に必要な環境
* adbコマンドが利用可能になっているPC
* Android端末接続するためのUSBケーブル手順
* Android端末側でUSBデバッグを有効にして(詳細は省略)USBケーブルでPCと接続する
* PC側で作業コマンドプロンプトを開く
* 以下を実行“`
$ adb shell
$ pm disable-user –user 0 com.sonyericsson.startupflagservice
“`Package com.sonyericsson.startupflagservice new state: disabled-user
と表示されたら成功
AndroidのlogcatをTSV形式に加工するrubyスクリプト
Androidのlogcatを解析する際にExcelやgoogleスプレッドシートに貼り付けて、
フィルタ機能を使って一部のログのみ抽出して表示したいので作ってみました。## 変換スクリプト
“`ruby:locat2tsv.rb
#!/usr/bin/env rubywhile line = ARGF.gets
(date, time, pid_package, level_tag, message) = line.split(” “,5)
(pid, package) = pid_package.split(“/”)
(level, tag) = level_tag.split(“/”)data = [“#{date} #{time}”, pid, package, level, tag, message]
puts data.join(“\t”)
end
“`## 変換結果をgoogleスプレッドシートに貼り付けた例
ARKitを使ったARアプリはエミュレータで動かせませんが、ARCoreを使ったARアプリはエミュレータで動かすことができます。
エミュレータで動かす際に少しハマったことがあるので共有します。
(Unityで作成したARアプリは、この記事とは違うやり方なので注意してください。)
## 必要な環境
– Android Studio 3.1以降
– Android Emulator 27.2.9以降## サンプルプロジェクトのダウンロード
この記事ではARCore SDKにあるサンプルプロジェクトを使用します。
[ARCore SDK](https://github.com/google-ar/arcore-android-sdk)をDLします。
そして、`samples/hello_ar_java`をAndroid Studioで開きます。## エミュレータ
エミュレータを起動します。
端末によってはARCoreをサポートしてないため、エミュレータはなるべく新しめの端末の方がいいです。
API Levelは27(Oreo)以降が必要です。(API Levelも最新の29が良さそう
【Androidアプリ入門】内部ストレージに保存・読込する♪ハマった編
今回は、[前回のAndroidアプリ](https://qiita.com/MuAuan/items/47d7b3dbafcc88eb235a)で内部ストレージに保存・読込を追加した。
情報は、ググるとそれなりに出てくるが結構ハマって、しかも日本語の読込は失敗しているが、現状進捗がなさそうなので、ここでまとめておこうと思う。| 英語保存|英語読込|日本語保存|日本語読込|
|:-:|:-:|:-:|:-:|
|![eigo.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/233744/8fb815d8-4615-56e2-8de5-506a81858a14.jpeg)|![eigo_output.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/233744/e9417090-5007-526a-9845-3e9b67e21f32.jpeg)|![nihongo.jpg](https://qiita-image-store
Android Navigation Componentによる画面遷移時のToolbar
# はじめに
この記事ではNavigation Componentの基本的な使い方は記載していません。
Navigation Componentを使った画面遷移時のToolbarの処理に着目しています。## Activityが持つViewの処理をActivityに書く
Toolbarを表示する際、ほとんどの場合ホストとなるActivityがToolbarを持ちます。
その際、ゲストのFragmentでToolbarに関する処理を書くと“`Kotlin
val toolbar = view.findViewById(R.id.toolbar)
requireActivity().setSupportActionBar(toolbar)
“`
となりますが、あまり書きたくないです。
Toolbarに限らずFloatingActionButtonなど、Activityが持つViewに関する処理の変更はFragmentに書かずに極力Activityに書き、正しく役割分担することにより保守性を高めたいです。## Navigation Componentによる画面
AndroidでToggleButtonを用いてServiceを起動・終了させてみる(起動時に通知バーに表示させる)
# はじめに
Androidアプリ開発(javaも)を触るのはかなり久々で何も覚えていなかったのですが、ちょっと思い立ってアプリを作ってみようかと思って奮闘中です。あまり詳しくないので細かい解説は出来ませんしn番煎じ感が否めませんが、ログとして残す意味でも書いておきます。
昔は~~結構重かった~~Eclipseを使ってAndroid用のプラグインやらAVD入れてゴチャゴチャやって・・・って感じでしたが、今ではAndroid studioでレイアウトもGUIで直感的に作れるようになって、エミュレータやら外部端末の設定も楽々で、サクサクになっていて便利になりましたね。# やりたいこと
ある一定間隔で何らかの処理をさせるAndroidアプリを開発したいと思っています。勝手に死んで欲しくはないので、ここでは`IntentService`ではなく、`Service`を使おうと思いました。
サービスの開始・停止には`ToggleButton`を使用します。# 環境について
– 開発環境はAndroid studio 3.5.2
– テストを走らせる端末はAndroid 8.0.0 &
UXデザイナーと連携する際に考慮したい事項
1ピクセルのデザインにこだわるUXデザイナーとの連携で、いろいろ苦労した経験からの知見を簡易的にまとめます
## ピクセル単位での調整を可能にする
エンジニアが、都度、確認できるデザインスペックが必要
XD、Sketch、Prott、Abstractなど、ピクセル単位で確認でき、素材を書き出せるツール・サービスを使う## 要件定義書
最初、エクセルやスプレッドシートを使っていたが、エンジニアは更新しやすいものの、デザイナーや企画者は使いづらい
さらに、デザインスペックを別で用意する必要がある
→ XDで要件定義を作成してもらい、デザインスペックも同時に作成&確認できるようにした## ワイヤーフレーム
要件定義からデザインを起こすまでのステップで、デザイナーがどのレベルまでデザインに落とし込めばいいか分からない
→ アプリエンジニアは、要件とデザインの両方がないと、実現可能かを判断できないケースが多いので、ある程度のデザインは必要だが、完成版を見せられると、その時点で判断不能に陥ることが多いので、ワイヤーフレームレベルのデザインで十分。
デザイナーとエンジニアで話し合うステップ
Android(Pixel 3) OSダウングレード手順メモ
#はじめに
Androidアプリ開発で、OS依存の問題かを確認するためにAndroidOSをダウングレードする必要がありました。
少しハマったので手順をメモします。Android Studioは使わずに実施しました。
バックアップしてから実施してください。#環境
PC:MacBook Pro
Android端末:Pixel3 AndroidOS10#やりたいこと
Pixcel3のAndroidOSのバージョンを10から9にダウングレードしたい。#手順
###1.ファクトリーイメージのダウンロード(PC)
pixcel3のイメージは以下にありました。
https://developers.google.com/android/images#blueline###2.ダウンロードしたファクトリーイメージのフォルダを展開する(PC)
###3.カレントディレクトリを2で展開したフォルダに変更する(PC)
###4.開発者向けオプションの『OEMロック解除』と『USBデバッグ』を有効にする(Android)
開発者オプションの表示の仕方は以下。
https://enjoyp
[ Android ] HTTP通信時に発生するタイムアウトエラー処理
AndroidでHttp通信を行う際、起きるタイムアウトの処理について述べる。
##サンプル
まずHttp通信は以下のような処理を行う。~~~java
HttpURLConnection connection = null;
try {
URL url = new URL(params[0]);
connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod(“GET”);
connection.setConnectTimeout(20000); // 接続タイムアウト
InputStream is = connection.getInputStream();
}catch・・・
~~~##接続タイムアウト
サンプルではタイムアウトを20secに設定してある。サーバからのレスポンスが20se
MediaPlayer Classを使う
MediaPlayerの機能を使ってみます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/505344/40d450a5-5b9b-0446-da69-80754f3d778f.png)簡単なI/Fを作ります。
“`xml:activity_main