ともちゃんのアプリ開発日記

組込みC言語プログラマだったともちゃんが、四苦八苦しながら、AndroidのJAVA/Kotlin、iOSのSwiftUIを習得して行きます。ともちゃんの備忘録も兼ねています。

Kotlin

Android 11 IntentService 非推奨

Android 11でIntentServiceが非推奨になりました。 JobIntentServiceを使って書き換えました。 IntentServiceの例: class TestService : IntentService("TestService") { override fun onHandleIntent(intent: Intent?) { // ここに処理を書く }} 呼び出し…

ツータッチメール2で、Intentを使用してGmailアプリに、CC, BCC, 件名, 本文が渡せない。

ツータッチメール2では、Intentという内部処理を使用して、Gmailアプリに、CC, BCC, 件名, 本文を渡しています。 ある日突然、Gmailアプリが、CC, BCC, 件名, 本文を受け付けてくれなくなりました。 その時のソースコードはこうです。 // メールアドレス設…

Android 8.0の通知ドット(通知バッジ)を削除する。

Android 8.0の通知ドット(通知バッジ)が邪魔な時があるので、削除する設定です。 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { val notificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager val channel =…

画像の自動リネーム

DSC auto renameに触発されて、どうやったらこのようなアプリが作れるのかと思い、PM Rename(Photo/Movie Rename)を作りました。 1. AndroidManifest.xml <uses-permission android:name="android.permission.FOREGROUND_SERVICE"/><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> リネームサービスを起動するので、</uses-permission></uses-permission>

Googleカレンダーのイベントを削除する

Googleカレンダーは便利なのですが、カレンダーのイベントを自動的にあるいは一括して削除する機能がないので、一括して削除する機能を作ってみました。 AndroidManifest.xml(アカウントにアクセスするパミッション) <uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /></uses-permission></uses-permission>

progressDialogがAPI26で非推奨になったため、代替でProgressBarつきSnackbarを実装してみた

Kotlinのソースです。 snackBar = Snackbar.make(dataCenter.getImportView()!!, "", Snackbar.LENGTH_INDEFINITE)val snackView = snackBar!!.view as Snackbar.SnackbarLayoutprogressBar = ProgressBar(context, null, android.R.attr.progressBarStyleHo…

排他制御(synchronizedブロック)

共通資源を排他制御するには、synchronizedブロックを使います。 synchronized(共通資源のインスタンス) { 共通資源へのアクセス} 私の実装例は以下です。(Kotlinのサンプルコード) synchronized(databaseManager.getSwitchingListDatabase()) { cursor = da…

Android 8.0のバックグラウンド処理

Android 8.0では、バックグラウンド処理に厳しい制約が付けられました。 よって、バックグラウンド処理からフォアグラウンド処理に移行するソースコードです。 サービスを呼び出す側 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { activity.startF…

端末がスリープしても動き続けるバックグラウンド処理

HandlerとWakeLockで実現しました。(ソースコードはKotlinで書いています。) AndroidManifest.xml <uses-permission android:name="android.permission.WAKE_LOCK" /> 時間を刻むタイマーサービス TimerService.kt class TimerService : Service() { val handler = Handler() companion object { private var wakelock : Powe</uses-permission>…