- 1. Pepper SDK入門(30) 値札感覚で外してはいけないテキスト音声合成のタグの話
- 2. Jetpack ComposeのMutableStateが変更されてからdoCompose()までの流れ
- 3. 環境センサーのデータをスマホでモニタリングする(Flutter) – データ表示編 –
- 4. Intent / intent-filter のCategoryとはなんなのか?
- 5. 【Androidアプリ開発】Kotlin初心者向けの超おすすめUdemy講座6選をまとめた
- 6. 【Android Kotlin】Calendarクラスを使用して今日の曜日を取得しよう!
- 7. Flutter未経験者が1か月で個人アプリリリースした件
- 8. Composable関数のバイトコードを読むメモ
- 9. TimePickerDialog
- 10. AndroidでDiscord Botを動かす
- 11. Jetpack Composeの`@Stable`や`@Immutable`のバイトコード上の挙動を確かめてみる
- 12. 現役AndroidエンジニアがAndroid Kotlin Fundamentalsコードラボに挑戦!その3
- 13. 標準の戻るボタンが押されたときにandroidのホーム画面に遷移
- 14. [Android]Android Gradle Plugin 7+へ更新後にビルドしたアプリを起動して ClassNotFoundException が発生した時の対処法
- 15. ディープリンクの種類を調べてみた
- 16. [UE4] Android Build-tool 31.0.0 でパッケージが出来ない件
- 17. Data Bindingのセットアップ&使い方(Kotlin)
- 18. Codemagic vs Bitrise: 詳細な比較
- 19. View Bindingのセットアップ&使い方(Kotlin)
- 20. TextViewの内容を動的に変更する方法
Pepper SDK入門(30) 値札感覚で外してはいけないテキスト音声合成のタグの話
#はじめに
今回はタイトルにもある通り、テキスト音声合成の話です。
テキスト音声合成、つまりText To Speechエンジンの使用には、特殊なタグが必要になります!つけっぱなしにしないといけないタイプのタグです?#テキスト音声合成とは
通常、発話のイントネーションや間の調整などは漢字やひらがな、カタカナの組み合わせで行います。
その書き方については公式のページがあるので[こちら](https://doc.robot.softbank.jp/pepper_biz/manual/index/topics_detail13/id=256)を参照してください。
それとは別の特殊な書き方である、中間言語について紹介することが本記事の狙いです。
中間言語では、Pepperの発話内容をカタカナで表記します。以下で、発話調整に使用可能なタグとその機能を見ていきましょう。
まずは基本となる、文頭記号と文末記号のタグをまとめます↓
・ \…文の先頭
・ \…ふつうの文末
・ \…疑問形の文末
・ \…上昇調の文末
・ \…名詞や代名詞で終わる文末
・ \
Jetpack ComposeのMutableStateが変更されてからdoCompose()までの流れ
なんどもフィールドに入ったり他へ保存を繰り返すので結構しんどいコードリーディングになります。
以下の書き換えが走ったときの挙動を追います。
“`kotlin
@Composable
fun Content() {
var state by remember { mutableStateOf(true) }
LaunchedEffect(Unit) {
delay(12000)
state = false
}
if (state) {
Node1()
}
Node2()
}
“`—
今回わかったこと
Recomposer.runRecomposeAndApplyChanges()がだいたいすべてやっている。
runRecomposeAndApplyChanges()が行っていることは1〜4になると思われる。 **0〜2までを今回は読んでいる**。
0: MutableStateが非同期で変更されて、Recomposer.snapshotInvalidationsとい
環境センサーのデータをスマホでモニタリングする(Flutter) – データ表示編 –
## 概要
* 新型コロナの影響で環境センシングデバイス、可視化ツールの需要が高まっている。
* まず弊社オリジナルのマイコンボードの「IoT-DX-Kit」を使って、気温、湿度を取得してみる。
* スマートフォンにBluetooth経由で温湿度のデータを送り可視化してみることにした。
* スマートフォンアプリの開発環境は、Flutterを採用しiOS/Android両方の動作を確認してみる
IoT-DX-Kit 紹介ページiPhone上で動作している様子(湿度の取得に失敗し検証中)
![スクリーンショット 2021-08-29 11.37.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/701445/919787b6-c6cb-b15a-2cc1-bf04b0655b83.png)Android上で動作している様子(温湿度両方取得成功)
![スクリーンショット 2021-08-29 11.39.08.png](htt
Intent / intent-filter のCategoryとはなんなのか?
Androidを扱う上で基本中の基本であるIntentですが、様々なパラメータを利用します、Action / Category / Extra / Flag / Data(Uri) とありますが、Categoryってあまり意味を意識して使わないのではないでしょうか?
ここでは、Categoryってなんなのかを説明してみようと思います。# intent-filterとintent
Categoryがどのように扱われるのかを調べるため、サンプルアプリを作ります。
アプリA(com.android.myapplication2):単に起動されるアプリです。検証用にhogeというschemeを受け取れるintent-filterを設定しておきます。
“`xml:AndroidManifest.xml
“`アプリB(com.andr
【Androidアプリ開発】Kotlin初心者向けの超おすすめUdemy講座6選をまとめた
アンドロイドのアプリ開発をしたい初心者向けのkotlinのUdemy講座のまとめです。
なお、基本的にJavaの経験はなくてもOKです。※ユーデミーは普段数万円する講座がセール時に数千円に値引きされていることがあります。
従ってセール時の購入がおすすめです。## はじめての Kotlin【Java 知らなくてOK!丁寧な解説で Android に必要な Kotlin の基本を学習】
おすすめ度:★★★★★
・[はじめての Kotlin【Java 知らなくてOK!丁寧な解説で Android に必要な Kotlin の基本を学習】](https://px.a8.net/svt/ejp?a8mat=3BBPJR+AVRCOQ+3L4M+BW8O2&a8ejpredirect=https%3A%2F%2Fwww.udemy.com%2Fcourse%2Fkotlin-beginner%2F)
### この講座で学べる内容
・Kotlin の基本的な文法や特徴について学びます。
・Android 開発に取り組むために必要なKotlin の基本の知識が身に付きます。
・Java の前提知
【Android Kotlin】Calendarクラスを使用して今日の曜日を取得しよう!
## 1. 今日の曜日を取得する
“`MainActivity.kt
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)// Calendarクラスをインスタンス化する.
val calendar: Calendar = Calendar.getInstance()
// 今日の曜日を取得する.
val day: Int = calendar.get(Calendar.DAY_OF_WEEK)}
}
“`## 2. 取得した今日の曜日をTextViewで表示する
“`MainActivity.kt
class MainActivity : AppCompatActivity(
Flutter未経験者が1か月で個人アプリリリースした件
##Flutter始める前の知識
Flutterをやる前にwebをやってました。
(html/css,javascript,phpなどを3年ほど)
ただJavaの知識などは参考書レベルでした。
##1日の勉強量
大体10時間以上、土日関係なくFlutter関連に費やしました。
10×30=300時間くらいがFlutter歴になります。
##リリースしたアプリStock
今回リリースしたアプリはこちらです。
![stock-100.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1844232/3e81b10b-fd7b-1781-b1d9-5bef20ed0e3f.jpeg)
https://play.google.com/store/apps/details?id=com.donack.org.stock
実はせっかくFlutterで開発したにもかかわらず、今回はandroidのみです。
そうです、開発に使えるPCがandroidしかありませんでした汗
##UI
Composable関数のバイトコードを読むメモ
decomposerでJavaに戻して読んでいきます。
https://github.com/takahirom/decomposer## 対象コード
“`kotlin
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
JetpackcomposestabilitysamplesTheme {
// A surface container using the ‘background’ color from the theme
Surface(
modifier = Modifier.fillMaxSize(),
color = Materi
TimePickerDialog
##はじめに
本日はTimePickerDialogについて話していきたいと思います
##環境
⚫︎OS : macOS Catalina 10.15.7
⚫︎Androidsutdio : 4.2.1
⚫︎Kotlin : 1.5.21
⚫︎Gradle : 7.0.2##TimePickerDialogとは
TimePickerDialogは、時刻の入力に優れたGUIコンポーネントのこと。
[めちゃくちゃ参考にさせて頂きました](https://qiita.com/fumiyakawauso/items/dbb0517144f2a4400e6a)
##実装
“`Kotlin
AndroidでDiscord Botを動かす 家にAndroid 5とかいう化石を搭載しているタブレットが2台ある。
片方はイヤホンジャックがタヒんでてYouTube専用機としても使いづらい。
なにか有効活用できないか。探した結果、Discord Botにたどり着いた。#動作環境
* Android 5
* UserLand 2.7.2
* Python 3.6.9
* Discord.py 1.7.3# 本題
**この記事ではBotアカウントの取得方法やBotのコードの書き方は書きません。環境構築の方法を超適当に書きます。**
てことで、AndroidにDiscord Botを構築しよう!
## 1. UserLandのインストール
これが無いとなにも始まりまらない。
ちなみに何故Termuxじゃないのかだが、TermuxはAndroid 5&6のサポートが打ち切られてしまったのと、Discord.pyが入れれなかった。
F-droidかGoogle Play([https://play.google.com/store/apps/details?id=tech.ula](https://play.google.com/
Jetpack Composeの`@Stable`や`@Immutable`のバイトコード上の挙動を確かめてみる
どういうときにComposable関数がキャッシュされる?されない?ってすごく重要だと思っていますがみなさん理解されていますか?
Compose 1.0.1で行っています。
これらのアノテーションについてはこちらで紹介しています。
https://qiita.com/takahirom/items/cc3f8cc6032ca9c28e01#stable-type
また以下のドキュメントで言及されています
https://developer.android.com/jetpack/compose/lifecycle?hl=en#skipping
実際どうなるのみたいなところが気になったので、少し気になるパターンでまとめてみました。
キャッシュされているときはでコンパイルすると以下のようなskipのコードが入ります。
このGradle Pluginを使うと以下のようなJavaコードを簡単に見ることができます。
https://github.com/takahirom/decomposer“`java
if (($dirty & 11 ^ 2) == 0 &
現役AndroidエンジニアがAndroid Kotlin Fundamentalsコードラボに挑戦!その3
## 前回
https://qiita.com/hayashidamoka/items/f527b3fc9c7b854ce2d3## Lesson 3: Navigation
## 03.1: Create a fragment
https://developer.android.com/codelabs/kotlin-android-training-create-and-add-fragment?index=..%2F..android-kotlin-fundamentals#0### 内容
– クイズアプリの作成
– フラグメントの追加
標準の戻るボタンが押されたときにandroidのホーム画面に遷移
##標準の戻るボタンが押されたときにandroidのホーム画面に遷移
###サンプルコード
“`kotlin:back_to_home
override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean {
return if (keyCode == KeyEvent.KEYCODE_BACK) {
val homeIntent = Intent(Intent.ACTION_MAIN)
homeIntent.addCategory(CATEGORY_HOME)
homeIntent.flags = Intent.FLAG_ACTIVITY_NEW_TASK
this@自分のクラスの名前.startActivity(homeIntent)
super.onKeyDown(keyCode, event)
} else {
super.onKeyDo
[Android]Android Gradle Plugin 7+へ更新後にビルドしたアプリを起動して ClassNotFoundException が発生した時の対処法
業務で開発しているプロジェクトで Android Gradle Plugin を 7.0.1 に更新したのですが、ビルドしてアプリを起動するとアプリが強制終了してしまいました。
その際に以下のようなログ(一部抜粋)が出力されていました。
“`
E/LoadedApk: Unable to instantiate appComponentFactory
java.lang.ClassNotFoundException: Didn’t find class “androidx.core.app.CoreComponentFactory” on path: DexPathList[…]
“`Google Issue Tracker で検索してみたところ、どうやら [こちら](https://issuetracker.google.com/issues/196406764) が該当の問題のようでした。
どうやら R8 の問題のようで https://issuetracker.google.com/issues/196406764#comment22 のコメントにあるよ
ディープリンクの種類を調べてみた
モバイルアプリ開発をしているとディープリンクを利用する機会が多いですが、種類やそれぞれの違いをちゃんと認識していなかったのでまとめました。
# ディープリンク(Deep Link)
デフォルトディープリンクと呼ばれることもある。
アプリがインストール済み アプリのエンドポイントに遷移する。 アプリがインストールされていない エラーメッセージ # ディファードディープリンク(Deferred Deep Link)
コンディショナルディープリンクとも呼ばれる。
アプリがインストール済み アプリのエンドポイントに遷移する。 アプリがインストールされていない App Store, Play Storeに遷移する。 #
[UE4] Android Build-tool 31.0.0 でパッケージが出来ない件
公式ドキュメント通りAndroid向けのパッケージ作成のためのセットアップを行って、いざビルドするとこんな感じのエラーがでることがあります。
“`c++
UATHelper: パッケージ化 (Android (ASTC)): Build-tool 31.0.0 is missing DX at C:\Users\wanko\AppData\Local\Android\Sdk\build-tools\31.0.0\dx.bat
UATHelper: パッケージ化 (Android (ASTC)):
UATHelper: パッケージ化 (Android (ASTC)): FAILURE: Build failed with an exception.
UATHelper: パッケージ化 (Android (ASTC)):
UATHelper: パッケージ化 (Android (ASTC)): * What went wrong:
UATHelper: パッケージ化 (Android (ASTC)): Could not determine the depen
Data Bindingのセットアップ&使い方(Kotlin)
## はじめに
Data Bindingのセットアップ方法と使い方を紹介します。
## 「Data Binding」とは?
Googleが提供しているJetpackのコンポーネントです。
UIコンポーネントとデータソースを、コードでなく宣言的にバインドできるようになります。## 環境
– OS:macOS Big Sur 11.5.2
– Android Studio:Arctic Fox | 2020.3.1 Patch 1
– Kotlin:1.5.21
– Gradle:7.0.2
– Gradle plugin:7.0.1## セットアップ
### Data Bindingの有効化
appフォルダ配下の「build.gradle」でData Bindingを有効化します。
“`diff_groovy:/app/build.gradle
android {
+ buildFeatures {
+ dataBinding true
+ }
}
“`これでData Bindingのセットアップは完了です。
## 使い方
### フ
Codemagic vs Bitrise: 詳細な比較
CodemagicとBitriseはどちらも、モバイルアプリを構築するためのクラウドベースの継続的インテグレーションおよび継続的デリバリーツールです。 Android、iOS、Flutter、React Native、Cordova、Ionicなどの一般的なモバイルフレームワークのほとんどをサポートします。
これら2つのプラットフォームのどちらかを選択するのは難しいかもしれませんが、ご心配なく。私たちは、個々のニーズまたはチームのニーズに最適なCI/CDサービスを決定するお手伝いをします。
この記事では、CodemagicとBitriseを直接比較し、各サービスの長所と短所について説明します。## オンボーディング
### Codemagicのオンボーディング
GitHub、BitbucketまたはGitLabアカウントを使用して、CodemagicとBitriseの両方にログインできます。![](https://blog.codemagic.io/uploads/2021/08/codemagic_login.png)
CodemagicはGitHubアプリ統合を使
View Bindingのセットアップ&使い方(Kotlin)
## はじめに
View Bindingのセットアップ方法と使い方を紹介します。
## 「View Binding」とは?
ビューを操作するコードをかんたんに記述できる機能です。
XMLレイアウトファイルごとにバインディングクラスが自動生成され、対象レイアウト内でIDを持つすべてのビューの参照を持ちます。
## findViewByIdとの違い
View Bindingは `findViewById` の上位互換といえます。
### Null安全
View Bindingはビューを参照するコードを自動生成するため、無効なビューIDを指定することによるNullPointerExceptionが発生しません。
### 型安全
バインディングクラス内のフィールドは、レイアウトファイルと同じ型を持つため、ClassCastExceptionが発生しません。
## 環境
– OS:macOS Big Sur 11.5.2
– Android Studio:Arctic Fox | 2020.3.1 Patch 1
– Kotlin:1.5.21
– Gradle:7.0.
TextViewの内容を動的に変更する方法
自作androidアプリ [Flexible Dice](https://play.google.com/store/apps/details?id=com.chelak.dice)
では、TextViewを動的に変更することでダイスロールを表現しています。その際に結構迷ったので備忘録的にメモします。