Android関連のことを調べてみた2021年08月30日

Android関連のことを調べてみた2021年08月30日

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 紹介ページ

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を動的に変更することでダイスロールを表現しています。その際に結構迷ったので備忘録的にメモします。
Google Play で手に入れよう

元記事を表示

OTHERカテゴリの最新記事