Android開発
Indigo Software(広告無しのAndroidアプリ - 広告無しのAndroidアプリ - Indigo Software)のアプリは、Android 12 ベータ4対応を完了しました。
Drawer内のNavigation Header内にSpinnerを置き、正常に動作させるのに苦労しました。 やりたいこと 下記の様に、Drawer内のNavigation Header内にSpinnerを置きたい。 DrawerのSpinner Layout XML activity_min.xml
背景 Googleプレイストアでは、SMSに対する規制が強化されている。 そのため、手軽なPush通知の手段が欲しい。 Push通知のためのサーバを置きたくない。 アイデア シンプルPush通知のアイデア 参照リンク AndroidのPush通知(FCM)をサーバー知識無しで試して…
ツータッチメール2では、Intentという内部処理を使用して、Gmailアプリに、CC, BCC, 件名, 本文を渡しています。 ある日突然、Gmailアプリが、CC, BCC, 件名, 本文を受け付けてくれなくなりました。 その時のソースコードはこうです。 // メールアドレス設…
MPAndroidChartでLineChartを描くのに苦労しましたので、サンプルコードを載せておきます。 private class GraphManager { private LinearLayout chartLayout; private final Context context; public GraphManager(Context context) { this.context = conte…
今までどうやったらいいかわからなかったのですが、意外に簡単でした。 activity_main.xml
OAuth2認証を使用して、添付ファイル付きGmailを自動送信しようとしたとき、かなりつまづいたので、記事にします。 1.Javamail-androidのダウンロード activation.jar、additionnal.jar、mail.jarをダウンロードし、libsフォルダに入れます。 2.build.grad…
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(共通資源のインスタンス) { 共通資源へのアクセス} 私の実装例は以下です。(Kotlinのサンプルコード) synchronized(databaseManager.getSwitchingListDatabase()) { cursor = da…
Android 8.0では、通知にNotificationChannelを設定してやる必要があります。 NotificationManager myNotification = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) …
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>…
Android 6.0以降、Dozeモードが導入されて、AlarmManagerも影響を受けるようになりました。 AlarmManagerを指定した時間に発火させるには、 Android 6.0(Marshmallow)以上:AlarmManger#setExactAndAllowWhileIdle() Android 4.4(KitKat)以上:AlarmManger#s…
課金テスト用のアカウントは、Google Play Consoleの [設定]→ [テスタの管理] だけでなく、 [設定]→ [アカウントの詳細]→ [テスト用のアクセス権がある Gmail アカウント] にも登録しないと、課金されてしまいます。
Android 6.0のRuntime Permissionの取得方法です。 1.Activityで実行する例 ストレージのアクセス権を得る場合の例です。 if (ContextCompat.checkSelfPermission(ExportImportActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageMana…
AChartEngineで円グラフを描く public void displayPieChart( int dataCount, String label[], int data[], int kind) { Resources resources = context.getResources(); if (dataCount == 0) { chartLayout.removeAllViews(); return; } CategorySeries ser…
端末起動時に処理を動かすには、 android.intent.action.BOOT_COMPLETED をキャッチしてやります。 public class BootBroadcastReceiver extends BroadcastReceiver { Context context; @Override public void onReceive(Context context, Intent intent) { …
AsyncTaskのdoInBackgroundが途中終了する現象に遭遇して四苦八苦しました。 AsyncTaskの呼び出し元のスレッドかActivityが終了すると、doInBackgroundも途中終了するような感じです。。 正確な記載でなくてすいません。
ファイルマネージャで写真を移動すると、ファイルのタイムスタンプが移動した日になってしまうのに、常々不満を持っていました。 良いアプリを探しましたがありません。 ならば自分で作ってしまえ、と作り始めましたが、ダメです。出来ません。 Android 5.0…
ActionBarに戻るボタンを設置する。 ActionBar actionBar = getSupportActionBar();actionBar.setDisplayHomeAsUpEnabled(true); 戻るボタンを押したときのイベントはActivity#onOptionsItemSelected()で行う。 @Overridepublic boolean onOptionsItemSelect…
カレンダー機能を作ってみました。 サンプルソースコードです。 http://uchida001tmhr.web.fc2.com 良かったら使ってみてください。
Viewの下位のViewのデータを参照する方法です。 ViewGroup viewGroup = (ViewGroup) view;int viewCount = viewGroup.getChildCount();if (viewCount > 0) { TextView childView=(TextView) viewGroup.getChildAt(0); String strDate = childView.getText().…
EditTextの下線の色を変える。 [1] Styles.xml <resources> <style name="EditTextColorControl"> <item name="colorControlNormal">@color/colorUnderLineNormal</item> <item name="colorControlActivated">@color/colorUnderLineActivated</item> </style></resources> colorControlNormal:通常時の色 colorControlActivated…
評価のために、Playストアのアプリのページを表示したいことがあります。 以下の様にします。 String packageName = getPackageName();Uri uri = Uri.parse("market://details?id=" + packageName);Intent intent = new Intent(Intent.ACTION_VIEW, uri);sta…
Androidの仕様で、スクリーンがONの時は、通知LEDは点灯しないそうです。 確かに!! スクリーンを点けていた!! 通知LEDは、スクリーンがOFFの時の通知手段なので、スクリーンがONの時は点灯しない仕様なんだそうだ。
Androidのアプリ内購入の開発では、テスト用アカウントは開発用アカウントとは別に作らなければなりません。開発用アカウントではサンドボックスデバッグはできても、実際の販売形態でのテストができないのです。 私は、 メイン機種:Android 5.1.1、開発者…
SQLiteデータベースの更新は、update()を使用します。 String whereClause = "_id=" + String.valueOf(id);ContentValues values = new ContentValues();values.put("date", date);values.put("kind", kind);values.put("money", money);values.put("categor…
ポップアップウィンドウでスピナーを使うと、例外で落ちることがあります。 その場合、XMLのスピナーの属性に以下を追加します。 android:spinnerMode="dialog" これにより、スピナーが別ウィンドウで開くようになります。
DatePickerの日付を制限する(最小値) // 最小値GregorianCalendar minDate = new GregorianCalendar();minDate.set(2016, 0, 1); // 2016年1月1日DatePicker datePicker = datePickerDialog.getDatePicker();datePicker.setMinDate(minDate.getTimeInMillis(…
年月だけのDatePicker(スピナー型)の作り方です。 // 日付設定ダイアログの作成・リスナの登録DatePickerDialog datePickerDialog = new DatePickerDialog(getActivity(), android.R.style.Theme_Holo_Dialog, DateSetListener, year, monthOfYear, dayOfMon…