- 1. QiChat MANIAX(1) Topicファイルのルールについてイントロ編
- 2. 【初心者向け】ディープリンク技術の概要と注意点
- 3. 【Android】画像を選択して、ImageViewに表示 in Kotlin
- 4. Android12の変更点ピックアップ
- 5. Androidアプリ開発者としてのキックオフ 「Androidアプリ開発の教科書」を読んで
- 6. USB接続した実機を用いてAndroid Studioからのデバッグ
- 7. AndroidManifest.xml上書きできずAPK生成に失敗する場合の解消方法
- 8. WSLとAndroidエミューレーターを共存させる。
- 9. タップ時のripple(波紋)エフェクトがうまく表示されない
- 10. 【Android】Google Play Consoleで広告表示設定の変更をする
- 11. 【Realm】relationship と insert
- 12. スマートウォッチでタブレット上のビデオプレーヤーを制御できる、ビデオ再生の分散デモ
- 13. ToolbarのonCreateOptionsMenu()がFragmentから呼ばれないときの対処法
- 14. 【Android】Android 12対応をする前にplay-services-analyticsのバージョンを確認しよう
- 15. aabをUSB経由で実機にインストールする方法
- 16. 【Flutter】全画面を削除し遷移する
- 17. Android アクセシビリティ
- 18. [Android] DataBindingでソースコードを減らしたい
- 19. Flutter: Android studioでFirebaseをセットアップする最低限の手順(Android&IOS)
- 20. Android apk old version download
QiChat MANIAX(1) Topicファイルのルールについてイントロ編
#はじめに
前回のあとがきでも書きましたが、今回からはPepper SDK入門とは別に、QiChat MANIAXとしてTopicファイルのルールを詳述していきます?さて、[Pepper SDK入門(24)](https://qiita.com/kskrin/items/1ad470634d8b36cb1f5d)で触れたように、Topicファイルには先頭にファイルの名前を記述するなどのルールがありました。例としては次のようなものです。
“`
topic: ~introduction ()u:(ソルトちゃんこんにちは) ぼくPepperですけど
“`
今回はQiChat MANIAXのイントロダクションとして、このTopicファイルのルールの概要を見ていきます⛵️#ルール事始め〜郷に入った場合の郷を知る〜
ここで言うルールとは、ユーザー入力とPepperの返答を関連づけるものです。
区切り文字、ルールの機能や特徴が様々なケースに対応してくれます。恢恢!
ルールにはユーザールール、ユーザーのサブルール、Proposalの三種類があります。#ユーザーとPepperとルー
【初心者向け】ディープリンク技術の概要と注意点
チーム内で「ディープリンク」「ダイナミッックリンク」「ユニバーサルリンク」等の用語の認識が合っているのか怪しかったので、整理してみました。
基本iOS目線で書いてますが、実装寄りではなく概念寄りの内容なので、Android開発者でも読めると思います。
※この記事ではURL/URIの区別を厳密に意識せず、より馴染み深い”URL”に統一して記述しています。
# ディープリンク (Deep Link) とは
任意のアプリの任意の画面に遷移させるURL、またはそれを扱う仕組みの総称であり、概念を表す用語です。
スマホアプリで代表のユースケースは以下のとおりです。
– スマホのブラウザでWebコンテンツ内のリンクをtapした際に、AアプリのX画面に遷移させる。
– Aアプリのボタンをtapした際に、BアプリのY画面に遷移させる。# ディープリンクを実現する仕組み
## カスタムURLスキーム
– URLスキームとは、URLの“://”より前の部分で、リソースにアクセスするための手段を示します。
– http/https, ftp, mailto などなどが既定のURLスキーム
【Android】画像を選択して、ImageViewに表示 in Kotlin
# ➊ はじめに
「`画像を選択して、ImageViewに表示する方法`」として「**startActivityForResult** と **onActivityResult**」で実装していたのですが、Androidは日進月歩しているらしく、この方法で実装するのは`非推奨`になってしまいました。> 基盤となる startActivityForResult() API と onActivityResult() API はあらゆる API レベルの Activity クラスで使用できますが、AndroidX Activity と Fragment で導入された Activity Result API を使用することを強くおすすめします。
とのことなので、推奨方法をここ?「[`アクティビティの結果を取得する`](https://developer.android.com/training/basics/intents/result)」で調べつつ、実装してみたいと思います。
# ➋どんな感じになる?
「`SELECT IMAGE`」ボタンを押下すると、カメラで撮った画像を選択するア
Android12の変更点ピックアップ
久しぶりの投稿です。時間ができたのでせっかくなので。
そろそろAndroid12リリースの時期で、遅れましたが、今年も気になる変更点をピックアップします。
全部を取り上げるというより、既存のアプリへの対応という前提で、特に重要度の高そうなものに絞ります。Samesiteに関する変更がある(targetSdkVersion>=31時)ので、個人的に最優先でチェックすることをおすすめいたします。
各項目の詳細については、情報引用元が一番正確かつ最新なのでそちらをご参照ください。# 主な情報引用元
Android12関連ホーム
https://developer.android.com/about/versions/12?hl=ja
→ スケジュールもここから。
→ 日本語ページを正とするのが良いと思いますが、英語ページの方が更新が早いので、情報を早めに手に入れたい場合は英語に切り替えるのが良さそうです。Android12上でアプリを動かす際に適応される項目
https://developer.android.com/about/versions/12/behavio
Androidアプリ開発者としてのキックオフ 「Androidアプリ開発の教科書」を読んで
これまでにもちょっとだけAndroidアプリの開発に携わったことがあるのですが、散逸的な知識しか身に着いていないという反省点がありました。
幸い仕事の方も少し落ち着いているので、良い機会として基礎から体系的な学習に取り組んでみることにしました。手始めに「[Androidアプリ開発の教科書(第2版)](https://www.shoeisha.co.jp/book/detail/9784798152028)」という書籍を手に取ったのですが、これがかなり良かったので内容について簡単にレビューしてみたいと思います。
これからAndroidネイティブアプリの開発をやってみたいという方の参考になれば幸いです。# 書籍の概要
2019年7月に第1版が刊行されたのち、2021年4月に第2版が出版されました。
バージョンの差が大きいことでおなじみのAndroidStudioですが、割と新しい本ということで自分が読んだ2021年8月の時点では特にコンパイルエラー等なくサクサク進めることができました。
1章から17章まで、各章のテーマに沿ったアプリをハンズオン形式で開発していく構成となっています。
USB接続した実機を用いてAndroid Studioからのデバッグ
## 環境
Android Studio: Arctic Fox 2021.3.1
## 実機(スマホ等)での事前設定
– 設定 > システム > 端末情報 を選択
– ビルド番号を7回タップする。これで、開発者向けオプションが有効となる
– 設定 > システム > 開発者向けオプション を選択
– USBデバッグ を有効にする– 注
– 設定メニュー構成は、機種によるかも## デバッグ
– PCと実機(スマホ等)をUSBケーブルで接続
– Android Studioでプロジェクトを開く
– Run > Debug
AndroidManifest.xml上書きできずAPK生成に失敗する場合の解消方法
## 環境
* Android Studio: Arctic Fox 2021.3.1
* gradle 7.0.2## 現象
プロジェクトのビルドや実行において、以下のようなエラーがでて失敗する。
“`
Zip file ‘…\app\build\outputs\apk\debug\app-debug.apk’ already contains entry ‘AndroidManifest.xml’, cannot overwrite
“`## 原因
– 依存ライブラリの中にAndroidManifest.xmlが含まれている場合、そのAndroidManifest.xmlが先にAPKにコピーされる
– その後、本プロジェクトのAndroidManifest.xmlをコピーしようとするが、既に存在するためエラーとなる
– [参考] Android Gradle プラグイン 7系で使用されているzipflingerというライブラリで上書きチェックが厳密にされるようになったため、問題が顕在化した模様
– https://android.googlesource
WSLとAndroidエミューレーターを共存させる。
## 導入
一般的なAndroidエミュレーターはHyper-Vを無効しないと使えないのに対して
WSLはHyper-Vを要求するのでどうしても共存は厳しいように見えたが。物凄くよさげなものを見つけたので紹介する。
**なお宗教上の理由でBluestacksは使えないという方はここでブラウザバックしてもok。**
## 結論
**BlueStacks Hyper-V版**というのがあるらしい、というかあった。
最低限の動作環境やダウンロードリンクは下から。
[BlueStacks Hyper-V版を利用する方法 – bluestack.com](https://support.bluestacks.com/hc/ja/articles/360041390952-BlueStacks-Hyper-V%E7%89%88%E3%82%92%E5%88%A9%E7%94%A8%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95)これでAndroidエミュレーターとWSLの共存が可能になった。
以下は GentooWSL2 と Bluestacks(Hyper-V)
タップ時のripple(波紋)エフェクトがうまく表示されない
## 経緯
透過度を設定したViewをタップした際にエフェクトを表示したかったのですが、なぜだかうまくいきません。薄いような、またそもそも出ていなかったり。
なので試してみました。
## 結論
背景に対してmaskを指定すれば解決、でした。“`
“`## サンプル
下みたいな画面を作成して検証してみました。
![Screenshot_1630748499.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1773816/3e91091c-02eb-fca6-9e95-c7094cfdbe93.png)
こんな感じの。(MainActivityは割愛)
“` activity_main.xml
【Android】Google Play Consoleで広告表示設定の変更をする 左メニューの「ポリシー」→「アプリのコンテンツ」
「広告」から現在の広告表示情報を変更
![スクリーンショット 2021-09-04 15.51.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/694762/f50ba1c7-dbb3-b65f-3a4a-d4e5180af289.png)
【Realm】relationship と insert
![realm-java 10.8.0](https://img.shields.io/badge/realm–java-10.8.0-6E60F9)
`RealmObject` 派生オブジェクトが他の `RealmObject` 派生オブジェクトの参照を持つ場合、
参照元のオブジェクトを insert (もしくは update)すると参照先のオブジェクトも insert(update)される。例えば次のようなクラスが定義されている場合を考える。
“`plantuml
class From extends RealmObject {
@PrimaryKey id
name
}
class To extends RealmObject {
@PrimaryKey id
name
}From o- To
“`“`Kotlin
import io.realm.Realm
import io.realm.RealmObject
import io.realm.annotations.PrimaryKey
import io.realm.kotlin.wh
スマートウォッチでタブレット上のビデオプレーヤーを制御できる、ビデオ再生の分散デモ
# ビデオ再生制御シナリオ
最近では、ユーザーはスマートデバイスでビデオを見ることが多いですが、次のような多くの課題に直面しています。– ビデオプレーヤーを制御するには、大画面デバイスを手に持つ必要
– ビデオの再生中はデバイス上で他のタスクを動作できないこれらの課題を解決するには、以下の解決策を提案します。
– 軽量のデバイス(スマートウォッチなど)をリモコンとして使用し、大画面デバイスでビデオプレーヤーを操作する 。
– マルチコラボレーション API を使用してHarmonyOSアプリを開発し、クロスデバイスをデプロイ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50470/5929d0a9-220c-1c42-d054-eed198071187.png)
#Harmony OSはビデオ再生制御シナリオをどのように解決するか
Harmony OS がサポートするマルチデバイスコラボレーションは次の通リです。
![image.png](https://qiita-ima
ToolbarのonCreateOptionsMenu()がFragmentから呼ばれないときの対処法
一部のFragmentでのみ、とあるメニューを表示したかったのですが、メニューのvisiblityをうまくコントロールできず困りました。
というのも、ActivityからはonCreateOptionsMenu()やonPrepareOptionsMenu()が呼べるのに、Fragmentからは呼べませんでした。
すごくシンプルなのですが、
“`kotlin:HogeFragment.kt
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View {
setHasOptionsMenu(true)
(略)
}
“`これだけでした。
setHasPotionsMenu(true)を呼べば、onPrepareOptionsMenu()やonCreateOptionsMenu()も呼ばれます。“`xml
【Android】Android 12対応をする前にplay-services-analyticsのバージョンを確認しよう
## 結論
v17.0.1以上に上げればOK“`gradle:build.gradle
com.google.android.gms:play-services-analytics:17.0.1
“`
https://developers.google.com/android/guides/releases#august_19_2021
>The latest update to the Analytics library includes the following change:
>・Fixed issue where library could not be built with Android 12 as its target.## 何が修正されたのか(何が悪さをしていたのか)
初期化時に呼ばれるクラス内にAndroid12から必須となった可変性フラグが宣言されていないPendingIntentがあった“`java:Application
GoogleAnalytics.getInstance(requireContext())
“`“`log:lo
aabをUSB経由で実機にインストールする方法
adbでapkをインストールするように、開発中のアプリのaabをインストールする方法を紹介します。
基本的には[公式ドキュメント](https://developer.android.com/studio/command-line/bundletool)のとおりです。
# 手順
* 以下からbundletoolをダウンロードし、/tmp/以下に保存します。
https://github.com/google/bundletool/releases
* 以下のコマンドでaabを複数のapkに分解します“`
java -jar /tmp/bundletool-all-1.8.0.jar build-apks –bundle=release.aab –output=/tmp/signed.apks \
–ks={キーストアへのフルパス} \
–ks-key-alias={keyAliasで指定する値} \
–ks-pass=’pass:{storePasswordで指定する値}’ \
–key-pass=’pass:{keyPasswordで指定する値}’
【Flutter】全画面を削除し遷移する
## 何度か画面遷移をした後にトップレベルの画面に戻す
“`dart
Navigator.of(context).pushNamedAndRemoveUntil(‘/page’, (_) => false,);
“`### メソッド
条件を満たすまで画面を破棄し遷移するため, 条件部分でfalseを返している.
“`dart
pushNamedAndRemoveUntil(
”, //page
(_) => false, //条件
)
“`参考 https://api.flutter.dev/flutter/widgets/Navigator/pushNamedAndRemoveUntil.html
Android アクセシビリティ
#はじめに
近年、日本でも多様性が求められる世の中になっており,アプリ開発においてもアクセシビリティを意識する必要があると思います。本記事ではAndroidアプリに関するアクセシビリティについてご紹介します。# 目次
* アクセシビリティとは
* Android
– フォントサイズ
– 表示サイズ
– TalkBack#アクセシビリティとは
障害を持つユーザーが情報を利用できるようにすることだけではありません。
ユーザーの能力や状況に関係なく、すべての人が情報を利用できるようにすることです。
アクセシビリティを念頭に置いてアプリを設計するということは、
シンプルさと知覚可能性を優先し、すべての設計上の決定を調べて、
さまざまな能力を持つユーザーやさまざまな方法で、
デバイスを操作するユーザーを除外しないようにすることを意味します。# フォントサイズ
Android上のフォントサイズを調整して、画面上のアイテムのサイズを変更できます。確認方法
設定→ユーザー補助→フォントサイズ→小・デフォルト・大・最大 から選択|デフォルト | 最大|
| :-: | :-
[Android] DataBindingでソースコードを減らしたい
# Fragment側の記述量を減らしたい
**Fragment側の記述量は多くなりがちです。
そして記述量が多いと可読性が落ちるでしょう。**
そんな時は**DataBinding**が役に立ちます。今回作成するサンプルアプリでは以下の記述量で済みます。
※ DataBindingを使用するためのレイアウトをinflateする記述は別途必要です。“`DataBindingFragment.kt
// テキストフィールドに入力された文字を監視し、ViewModelに伝達する
mBinding.myTextFiled.addTextChangedListener {
mBinding.viewModel?.updateText(it.toString())
}
“`## どんなアプリができるの?
10文字以上入力すると、画像が表示され、「10文字以上入力してね!」の文字が非表示になります。
また入力文字数が表示され、10文字以上の入力で緑色、10文字未満では赤色に着色します。
こんなアプリができます。![2021-09
Flutter: Android studioでFirebaseをセットアップする最低限の手順(Android&IOS)
###この記事について
この記事はFlutterでAndroidとIOSのアプリを作る際、Firebaseを使用するときのセットアップ方法についての記事です。
実装するたびに動画の教材を見ており時間が掛かってしまうため(特にIOS)、一連の作業を箇条書きにしております。
セットアップのための最低限やることを書いた記事のため、Firebaseの機能の実装等は記載していません。また、Firebaseプロジェクトの作成は省略しております。###開発環境
“`
% flutter doctor
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel master, 2.6.0-1.0.pre.150, on macOS 11.5.2 20G95 darwin-x64, locale ja-JP)
[✓] Android toolchain – develop for Android devices (Android SDK version 31.0.0)
[✓] Xcode –
Android apk old version download
https://apkpure.com/