日本語文字起こしに対応した「Google レコーダー」が音声入力として最強では?

最近、やっと更新されて日本語でも高精度な文字起こしができるようになりました。

👉 レコーダー - Google Play のアプリ 

レコーダーで、録音した音声を検索できます。会議、講義、バンド練習、家族の思い出など、なんでも録音して保存し、後で再生できます。レコーダーで、録音した音声の文字起こしとラベル付けが自動的に行われるため、大事な情報を簡単に見つけることができます。

✍ 編集

「語句の編集」から聞き直しながら意図する語句に編集できます。

また、録音した音声の前後の不要部分を書き起こし文字を見ながら「切り抜く」ことも可能です。

✍ 共有

以下の形式で共有することができます。

- 音声 (.m4a ファイル)
- 文字起こし (.gdoc .txt ファイル)
- 動画クリップ (.mp4 ファイル)

✍ まとめ

私がよく使うのは、テキスト編集画面から「全選択」でクリップボードへコピーしてからの好きなエディタに貼り付けです。

iPhoneやパソコンからもブラウザ経由で録音、文字起こししたアーカイブを確認できます。

👉 ブラウザ版 Recorder 

以上です。よろしくおねがいします。


MVVM で Hilt のパターン化 💉

シンプルなものにして整理、定型化しておきたい。

「どこに」←「どれを」インジェクトしてるか、とそれの記述をパターン化。

 

💉 View ← ViewModel

MVVM でいうところの View であるこれらに、ViewModel をインジェクトする場合。

コンストラクタからインジェクトできないいわゆる「Androidクラス」。
以下のものがこれに当てはまる。

- Activity
- Fragment
- View
- Service
- BroadcastReceiver

それぞれのクラスに付ける2つのアノテーションと ktx による記述でプロパティにインジェクトする。


@AndroidEntryPoint
class MainFragment : Fragment() {
  private val viewModel: MainViewModel by viewModels()


@HiltViewModel
class MainViewModel @Inject constructor(
  repository: MainRepository
) : ViewModel() {

 


💉 ViewModel ← Repository

Module を使った ViewModel コンストラクタへのインジェクト。

インターフェースの型でリンクする。


@HiltViewModel
class MainViewModel @Inject constructor(
  repository: MainRepository
) : ViewModel() {

Hilt 備え付けの Component でライフサイクルを考慮して、実装型でインジェクトする。

abstract、@Binds は、インターフェースを介す場合の、 @InstallIn( ViewModelComponent::class)、 @ViewModelScoped は、 ViewModel に対してのインジェクトのパターン。


@Module
@InstallIn(ViewModelComponent::class)
abstract class RepositoryModule {

  @Binds
  @ViewModelScoped
  abstract fun bindRepository(impl: DefaultRepository): MainRepository
}

 

💉 Repository ← DataSource

Androidクラスのようなプロパティへのインジェクトとは違う @Module、@Provides を使ったコンストラクタインジェクトの Hilt基本的パターン。

SingletonComponent は、旧 ApplcationComponent で生存期間最長。


class DefaultRepository @Inject constructor(
  private val localDao: LocalDao,
  private val contentResolver: ContentResolver,
  private val sharedPreferences: SharedPreferences
) : MainRepository {


@Module
@InstallIn(SingletonComponent::class)
object DataSourceModule {

  @Provides
  @Singleton
  fun provideLocalDao(
    @ApplicationContext context: Context
  ): LocalDao {
    return LocalDao(context)
  }

 

💉 DataSource ← Context

Context は、 @ApplicationContext と @ActivityContext がすでに用意されているので区別しながらアノテーション1つのみで注入できる。これ便利。


@Module
@InstallIn(SingletonComponent::class)
object DataSourceModule {

  @Provides
  @Singleton
  fun provideLocalDao(
    @ApplicationContext context: Context
  ): LocalDao {
    return LocalDao(context)
  }

しかし、どの位置でも自在にインジェクトしようとするとコケる。


[Dagger/MissingBinding] @dagger.hilt.android.qualifiers.ActivityContext android.content.Context cannot be provided without an @Provides-annotated method.

@Module 直下の @Provides メソッドの引数で使うものですか。

 

build.gradle


buildscript {
  ext.versions = [
    "hilt"       : "2.41",
  ]
  dependencies {
    classpath "com.google.dagger:hilt-android-gradle-plugin:${versions.hilt}"
  }
}

apply plugin: "org.jetbrains.kotlin.kapt"
apply plugin: "dagger.hilt.android.plugin"

dependencies {
  implementation "com.google.dagger:hilt-android:${versions.hilt}"
  kapt "com.google.dagger:hilt-android-compiler:${versions.hilt}"

  androidTestImplementation  "com.google.dagger:hilt-android-testing:${versions.hilt}"
  kaptAndroidTest "com.google.dagger:hilt-compiler:${versions.hilt}"
  testImplementation "com.google.dagger:hilt-android-testing:${versions.hilt}"
  kaptTest "com.google.dagger:hilt-compiler:${versions.hilt}"
}

👉 Gradle Build Setup 

 

💉 まとめ

多少の流儀はあるけど、 Component 記述がなくなっただけでも記述量は大幅に削減できます。

alpha らしく、まだコンポーネント名など変わるんかもしれんが、ここも適宜修正させてもらいます。

👉 【MVVM】 Kotlin Flow で使える5つの利用パターン 
👉 skydoves/Pokedex: 🗡️ Android Pokedex using Hilt, Motion, Coroutines, Flow, Jetpack (Room, ViewModel) based on MVVM architecture. 
👉 Hilt and Dagger annotations cheat sheet - Android Developers - Medium 



画面上部のLED点滅は一体なんだったのか【Android12 / Pixel5】

ロック画面時に謎だったのですが、



このアプリを入れてみて分かりました。

👉 センサーツールボックス - Google Play のアプリ 



「近接センサー稼働中」

の明示ですね。

で、

ロック画面では、どの機能がLEDを点滅させているか?

ということですが、

How to disable the annoying flashing dot on your Pixel 5

[設定] - [システム] - [ジェスチャー] からの

「ふせるだけでサイレントモードをオン」

のようです。

👉 How to disable the annoying flashing dot on your Pixel 5 - 9to5Google 


Android12でアイコンを四角にする方法

Android11 では、フォントやアイコン形状などはシステムUIのテーマとしてカスタマイズできていました。

Android11 custom theme icons

👉 Android 12 is missing font and icon shape customization 

しかし、Android12では、

android12 dynamic theme

フォント変更
→ できない。

アイコンの形状変更
→ できない。

👉 Android 12 Beta 3 Changelog: All the new features and changes! 

ということで、

Android12ではアイコンは丸型だけ。四角には変更できない。

ということになります。

このことについては、上記XDAデベロッパーサイトのコメントやGoogle Issue Tracker でも悲しみのコメントが多く寄せられています。

👉 Custom Styles missing from Wallpaper and Style menu [193775634] - Visible to Public - Issue Tracker 

しかし、Google 社員がコメントしているように、

“The custom style features (font, icon shape, icon pack, and accent color) in R are being replaced by the new dynamic theming feature that we are introducing in S. We see the new dynamic theming feature as more modern and intelligent. A simple and delightful experience that we hope all users can get to enjoy.”

「カスタムスタイル機能は、Android12ではダイナミックテーマ機能に置き換えられています。よりモダンでインテリジェントなものと見なされています。すべてのユーザーにシンプルで楽しい体験をお届けします。」

と、新しいダイナミックテーマ機能は、

- モダン
- インテリジェント
- シンプル
- 楽しい

ということなので心配ないようです。

使いづらくなっただけかと思ってびっくりしていましたが、

- モダン
- インテリジェント
- シンプル
- 楽しい

ということです。

よろしくおねがいいたします。

👉 アイコンの形は四角のほうが使いやすい 


Jake Wharton さん「Android12、ロック画面 / 常時表示の時計が良い。」

Android12について何かつぶやいています。


Android 12にアップグレードしたばかり。システムUIの使いやすさと実用性の急激な低下傾向が続いています。通知ペインは、コンテンツを表示するためのエリアですが、実際のコンテンツの2倍のネガティブスペースがあります。システムUIのピークは、時計が動く前のAndroid8でした。

でも、ロック画面や常時表示はとても気に入っています。大きな時計がいい。さらに、今回は時間と分のフォントが同じ太さになっています。

Android12 always show clock and info

 

「ロック画面」とか?

スマホを利用したあと、

電源ボタンを押したり、

一定時間経過後に、

画面が変化していきます。


スリープ画面 (画面消灯)

 ↓ 再度画面をオン

ロック画面

スリープ画面 (時間と情報を常に表示時 ※設定は後に記述)
Android12 消灯画面クロック表示

ロック画面
Android12 lock screen clock

 

各画面への条件や操作設定

利用画面から スリープ画面(画面消灯) へ遷移するには、

一定時間経過させるか、電源ボタンで消灯。


設定

 ↓

ディスプレイ

 ↓

画面消灯

Android12 画面消灯時間設定

この スリープ画面(画面消灯)時にも、

ロック画面のように、時計などが表示できる。


設定

 ↓

ディスプレイ

 ↓

ロック画面

 ↓

時間と情報を常に表示

Android12 時計と情報を常に表示する

さらに、ロック画面 へ遷移するには、

さらに、そこから、

一定時間経過させるか、電源ボタンでロック。


設定

 ↓

セキュリティ

 ↓

画面ロック 歯車アイコン

 ↓

画面消灯後からロックまでの時間

電源ボタンですぐロックする

Android12 画面ロック

うん、確かに見やすいし、使える。

しかしこの、

スリープ常時時計表示は、

暗闇で、

「OK、グーグル 今何時?」 とか言わなくても良いのだが!

👉 Android12 が来たので新機能を使ってみました。 | #android ファショ通 
👉 【Android12】「At a Glance」が壊れてる件