セルは回るが、エンジンがかからない場合、点火系と燃料系のいずれかに問題があります。エンジン不動の原因を特定する方法と主な原因となるデストリビュータの修理方法について説明します
老後は「余生」ではなく、「セカンドライフ」。そんな生き方に挑戦する元ITエンジニアのブログです。
某ITベンダーを早期退職。現在、フリーランスのエンジニアとして、日々アプリ開発に奮闘中です(^^♪ クルマとアニメとラノベが大好きなオッサンです♪
突然、エンジンがかからなくなった!!原因特定とデストリビュータの修理
セルは回るが、エンジンがかからない場合、点火系と燃料系のいずれかに問題があります。エンジン不動の原因を特定する方法と主な原因となるデストリビュータの修理方法について説明します
GoProやInsta360などのWi-Fiデバイスに接続する場合、システムサービスのWifiManagerとConnectivityManagerを使用してネットワーク接続します。アプリからWi-Fiデバイスに接続する実装を紹介します
フローティングアイコンのImageViewの表示切り替えはOnTouchListenerのonTouchでも可能ですが、インタフェースを経由して操作する場合、ImageViewを再生成する必要があります
トランクにあるスペアタイヤを外すと窪みに水が溜まっていることに気が付いた。走行中に足回り(リアショックのアッパーマウント)がら水が入り込んだ?走行していないのにトランクが濡れている。走行していないのに車内に水が入りこむ場合、雨漏りしています...
Application Overviewの第二弾はツール、音楽、仕事効率化、動画プレイヤー、ショッピングなどのアプリについて、サポートアプリのアドオン利用によるアプリ間のデータ共有や機能の相互利用をDFD(データ・フロー図)で説明します
パスワード入力など、入力した文字の目隠し表示が必要なケースがあります。目隠し表示の入力はEditViewのInputTypeでTYPE_TEXT_VARIATION_PASSWORDを指定します
IPアドレスはピリオド(.)で区切られた3桁までの数値が4つで構成します。PatternとMatcherを使用して、フォーマットをチェックします
PC画面やWebカメラの映像を録画MiniTool Screen Recorder
MiniTool Screen Recorderを使って、アプリ画面と機器を操作している様子をWebカメラで録画、録画中の画面に直接、矢印や線などの図形、テキストや音声などを追加して、操作説明動画の作成をワンストップで行う方法を紹介します
アプリ間でファイルを連携する場合、出力側と入力側でファイル指定のユーザ操作が必要となります。今回は、アプリ間でのファイル連携をワンストップで実現する、ファイルを起動引数とした別アプリ(サービス)を起動する方法を紹介します
走行軌跡や速度などの走行データを記録するロガーアプリについて、サポートアプリのアドオン利用によるアプリ間のデータ共有や機能の相互利用をDFD(データ・フロー図)で説明します
端末にアプリがインストールされていない場合にGooglePlayに誘導など、アプリがインストール済みか確認したい。PackageManagerを使用して、端末にアプリがインストールされているか1ラインのコードで確認する方法を紹介します
アプリ開発のオープンソースライセンス管理をgradleプラグインを使って自動化する方法を紹介します。license-tools-pluginを使用しているオープンソースのライセンス情報をHTMLで出力、ライセンス情報をアプリで表示します
iOSアプリの時間選択で採用されているドラムロール式ユーザインタフェースをAndroidアプリで実装します。AndroidのドラムロールはNumberPickerを使用します。NumberPickerで数値以外を扱う場合に工夫が必要です
車載動画の撮影にInsta360に代表される360°撮影できるアクションカムを使用するとどうなるか?リフレーミングで視点の異なる動画の書き出しを使って、これまでの車載動画では視ることができなかった世界(視界)とその活用法を紹介します
『AcamRs』は"Open Spherical Camera API"に対応したアクションカメラにWi-Fi接続して録画をリモートで操作するアプリです。アプリ画面から操作のほか、コマンドによるサービス起動操作が可能です。
SwitchCompatで選択した状態をユーザに伝える場合、状態をテキストで表示することが望ましいです。SwitchCompatのテキスト表示は左側でそのままでは不自然です。SwitchCompatのテキスト表示を右側にする実装を紹介します
フリーレイアウトで自由に移動できるViewGroupの実装を紹介します。layoutを使用することで移動は可能ですが、親ViewGroupが子ViewGroupやViewの位置を確定させているため、再描画の際に元の位置に戻る問題が発生します
ItemTouchHelperのスワイプ(onSwiped)は、アイテムがリストから消滅した時点でイベント発生します。削除前に確認メッセージを表示する場合に違和感があります。今回はスワイプ操作でアイテムがリストから消滅しない実装を紹介します
Google Playアプリはアプリをアップデートする際にインストール可能かチェックします。OSバージョンやハードウェア要件を満たさない場合に「このアプリはお使いのデバイスに対応しなくなりました」が表示され、アップデートができなくなります
データベースからから受け取ったデータ構造がListの検索結果をKeyを使ってアクセスしたい。この場合、検索結果をMapに変換する実装がスマートです。Listに格納されたデータをワンラインでMapに変換する方法を紹介します
Buttonのタップ時にフィードバックがない場合、タップの有無が判断できません。解決策のひとつとして、タップ音をSoundPoolで実装する方法がありますが、消音時は効果がありません。今回は、Buttonのタップエフェクトの実装を紹介します
日常生活の行動を記録・比較することで、改善や習慣化を促し、継続力を身につけるライフログアプリ。1画面でログの記録と確認、ドラムロールによる数値選択と行動選択で記録など、シンプルで簡単な操作でライフログをつける習慣を身に着けることができます
ListViewではアイテム選択時に背景がグレー表示になり、選択しているアイテムを判別できます。RecyclerViewではアイテム選択時のグレー表示がありません。Recyclerviewでアイテム選択時のエフェクトの実装方法を紹介します
SwitchBot温湿度計プロは温度と湿度をBLEアドバタイズに含めてデータ送信している点は共通ですが、BLEアドバタイズの内容が異なります。SwitchBot温湿度計プロのBLEアドバタイズから気温と湿度取得する実装を紹介します
Viewコンポーネントを立体的に見せる方法として、elevationに値を設定して影をつける方法が有効です。しかし、ViewGroupのelevationに値を設定しても影がつきません。今回は、ViewGroupを影をつける方法を紹介します
Viewの回転自体はsetRotationで実装できますが、画像データを回転する場合はすこし工夫が必要です。今回は、画像データの回転と回転で発生する余白の透過の実装を紹介します
画像編集ソフトのぼかし機能(Blur)はライブラリ(blurry)を使用すれば、簡単なコードで実装できます。今回は、blurryを使用した画像データのぼかし処理の実装を紹介します
値変化のイベントリスナーに処理を記述するケースで、イベントの発生間隔が短く、操作し難いことがあります。処理中に発生したイベントの無効化と処理の遅延実行することで改善できます。処理を遅らせて実行するサブルーチンを使用して、遅延処理の実装します
サポートが終了したFFmpegKitですが、16KBのページサイズ対応版としてフォークされ、ソースが入手可能です。こちらのクローンを使って、16KBのページサイズ対応版のFFmpegKitを作成します。作成手順をコマンドレベルで紹介します
Androidアプリは、逆コンパイルでソースを閲覧することが可能です。アプリの脆弱性対策として難読化は有効ですが、ビルドは成功するがアプリを起動するとクラッシュするなど問題があります。アプリを難読化する方法と難読化の問題点の対策を説明します
Google Play Billing Library8対応
Google Play Billing Library7からBilling8に移行する場合、QueryProductDetailsResultの変更の影響でビルドエラーになります。ビルドエラーの原因と対応方法を紹介します
非推奨APIとは将来的に廃止予定、バージョン間で互換性がないなど、対処が必要です。デフォルトのビルドでは新しいバージョンで非推奨になったAPIがソースに含まれていても検出されません。検出する方法から対処方法のサンプルをいくつか紹介します。
アプリをもっと多くの人に知ってもらうために作成したプロモーション動画です。動画はすべてInstagramのリール動画でMiniTool MovieMakerを使って作成しています。
スマホ本体にある動画や画像ファイルにアクセスする場合にコンテンツリゾルバを使用しますが、Androidのバージョンの違いによって動画や画像ファイルを削除できない場合があります。メディアストアにある動画や画像ファイルを削除する実装を紹介します
PDF編集ソフトでラクラク申請書作成MiniTool PDF Editor
PDFファイルの申請書をプリンタで印刷して、記入する。記入する内容が同じ部分を毎回記入するのは面倒。違う部分のみ記入することで、ラクしたいと思ったことはありませんか?PDF編集ソフトを使って、記入済みPDFファイルを作成する方法を紹介します
QRコードのスキャンはスマホのカメラ機能して、撮影した画像からQRコードを検出し、デコードします。GooglePlay開発者サービスにスキャン機能があり、簡単にQRコードのスキャン機能が簡単に実装できます。オートスキャンの使用やカメラの権限リクエストが不要です
動画やゲームなどのコンテンツでは、全画面で表示したくなります。全画面モードでナビゲーションバーを非表示にした場合、ワンタップでホーム画面に戻ることができなくなります。今回は全画面モードでナビゲーションバーの戻るボタンとホームボタンを使用できる実装を紹介します
URLの交換をスマホで行う場合に便利なQRコード。QRコードはURLの交換に特化したインタフェースではありません。任意のデータをQRコードで表示して、データ交換の手段として使用できます。任意の文字列をQRコードで表示する実装を紹介します
横画面で入力キーボードを表示すると全画面にソフトキーボードが表示されて、入力項目が隠れる現象が発生します。EditTextのIMEオプションを指定することで入力項目が隠れる現象を回避することが可能です。
Android16対応(edge-to-edgオプトアウト廃止の対応)
エッジ ツー エッジが無効化できない場合、ステータスバーやナビゲーションバーをアプリ領域に被らないようにレイアウトを制御する必要があります。Android14以下においてもエッジ ツー エッジを適用することでレイアウト制御の共通化が図れます
アプリのプロモーション動画を作成するMiniTool MovieMaker
スマホアプリのプロモーション動画を作成する場合、スマホの縦長画面の動画編集に対応している動画編集ソフトを選択することが重要です。宣伝や操作説明のプロモーション動画を作成する際に使用しているMiniTool MovieMakerをご紹介します
ArchiveHubはGoogleドライブにある走行データを計測ラインを使ってタイム計測を行い、集計したタイム計測結果はアプリの画面で確認したり、Googleスプレッドシートで共有でき、画面で走行データのグラフ表示や走行データの比較表示やモーション再生ができる
バッテリーを交換したばかりなのにエンジンがかかりくい。燃料ポンプの作動音(ジージー)がするけど、セルモーターの作動音(キュルキュル)がしない場合、セルモーターが故障している可能があります。DIYでセルモーターを交換する方法を紹介します
ブレーキローターを流用する場合、ポン付けできるものから、加工が必要なものまで様々。ブレーキローターの流用で4穴のブレーキローターを5穴に加工する方法を紹介します
小数点以下の数値を含む演算での数値は2進数で表現し、演算します。2進数で表現できない数値は近似値で扱われ、これが誤差が生じる原因です。今回はBigDecimalを使用して、有効桁数の範囲で誤差が発生しない演算の実装について説明します
他のアプリのスクリーンショットを取得するMediaProjection
Android5で画面に表示している内容をメディアストリームとしてキャプチャするMediaProjectionが追加されました。今回はMediaProjectionで実行中の他のアプリ画面のスクリーンショットを取得する実装を紹介します
他のアプリ画面の上に重ねて表示するWindowManager
アプリの操作してる様子を録画したい、アプリの画面のスナップショットを取得したいなど、操作パネルを他のアプリの上に重ねて表示したいケースがあります。他のアプリの上に重ねて操作パネル(フローティングアイコン)を表示する実装を紹介します
SAFのデフォルトフォルダを指定するEXTRA_INITIAL_URI
Storage Access Framework(SAF)のデフォルトフォルダはEXTRA_INITIAL_URIで指定しますが、EXTRA_INITIAL_URIに指定するフォルダ表記を誤ると正しく動作しません。フォルダの表記を説明します
Activityの待機と復帰moveTaskToBack & moveTaskToFront
ActivityのライフサイクルでonDestroyが実行された状態を終了、onPauseまで実行された状態を中断と区別します。サービス起動で画面をバックグランドに移動させ、サービス終了で画面をフォアグランドに呼び戻す実装方法を紹介します
ポリシーに準拠する対応Photo and Video Permissions policy
Photo and Video Permissions policyではREAD_MEDIA_IMAGES、READ_MEDIA_VIDEOの使用を制限します。Photo Pickerでスマホ本体にある画像や動画を選択する実装を紹介します
Android15ではアプリのtargetSdkを35にすると、強制的にエッジツーエッジが適用され、アプリの表示領域にステータスバーとナビゲーションバーが被さって表示されます。アプリの対応として、エッジツーエッジを無効にする方法を紹介します
imgsawは画像やPDFをビューアに表示、ズーム&スクロールと枠(フレーム)を調整して、トリミング加工した画像ファイルを生成します。加工した画像ファイルは他のアプリからファイルピッカーで選択させたり、Googleドライブなどに出力できます
PopupMenuのメニューを表示する位置がリスナーを設定したオブジェクトの左下または右下です。メニューのアイテムの間隔が広く、メニュー操作の対象がわかりにくい。PopupMenuの表示位置とメニューの間隔を調整する実装方法を紹介します
ブレーキペダルの位置は調整できますが、アクセルペダルの位置は調整できないことが多い。ブレーキペダルの位置の調整は、遊びとストロークに影響がでるため、ブレーキペダルはベストな位置に調整して、アクセルペダルの位置を調整する方法をオススメします
Google社より「ご対応のお願い: GooglePlayのポリシーをアプリが遵守していません」といったタイトルのメールが届き、リリースが否承認となりました。ポリシー違反を特定する方法と対処から、ポリシー違反の解消までの流れを説明します
Android14対応(非推奨のoverridePendingTransition)
overridePendingTransitionは予測型「戻る」アニメーションのサポートに伴い、Android14から非推奨です。非推奨のoverridePendingTransitionをAndroid14以降に対応する実装方法を紹介
Exoplayerで音楽の再生をコントールする場合、PlayerControlViewを使用します。PlayerControlViewで音楽の再生や一時停止などを操作するための標準コントローラのアイコンを変更する方法を紹介します
USB接続GPSレシーバはなんといっても価格が安いのでロガーアプリをお試しで利用したい人におススメです。Bluetoothのように電波干渉で通信が不安定になることがありませんが、USB入力を使用するため使用中は充電できない欠点があります。
AndroidのUSBシリアル通信は、USBデバイスの接続はUSBホストAPI、シリアル通信はusb-serial-for-androidを使えば、簡単に実装できます。USBシリアル通信の実装について、サンプルコードを交えて、説明します
GPSレシーバなどのUSBデバイスを使用する場合、接続やデバイス名などのメタ情報の取得には不要ですが、アクセスには権限チェックとユーザ承認が必要です。USBデバイスのアクセスに必要な権限チェックとユーザ承認リクエストの実装を紹介します
デバイス間の通信では数値データをリトルエンディアンで扱うことが多い。リトルエンディアンとはバイト単位に分解された数値データを最下位のバイトから順番に格納していく方式です。数値データをリトルエンディアンで文字列データに変換する方法を紹介します
Bluetooth機器との接続には、機器固有のMACアドレスが必要です。デバイスのMACアドレスを取得する方法としては、デバイスから定期的に発信されるビーコンから取得する方法、デバイスとのペアリング情報から取得する方法などがあります
仮想デバイス(Android Virtual Device)で動作させるとExceptionが発生してアプリが終了することがあります。実行しているデバイスが仮想デバイスか判定して回避する方法を紹介します
アプリで動画をコマ送りで再生する場合、動画ファイルのフレームレートの値が必要です。動画ファイルのフレームレートを取得する方法として、ExoPlayerのAnalyticsListenerを使用して、フレームレートを取得する方法を紹介します
ジムカーナ練習会では、全体のタイムよりも自身の課題をもとに、コースをいくつかの区間にわけて、区間毎のタイムを確認しながら練習する方法が有効です。ジムカーナ練習会でアプリとGPSロガーを使って、区間毎のタイムを簡単に計測する方法を紹介します
問題が見つかりました。 誤解を与える表現に関するポリシーへの違反
Google社より「ご対応のお願い: GooglePlayのポリシーをアプリが遵守していません」といったタイトルのメールが届き、リリースが否承認となりました。ポリシー違反を特定する方法と対処から、ポリシー違反の解消までの流れを説明します
ItemTouchHelperのスワイプ操作をアイテムの削除とした場合は問題ありませんが、アイテムの選択と画面遷移とする場合に違和感があります。スワイプ操作でアイテムがリストから消滅しない、アイテムの選択と画面を遷移する実装を紹介します
日時をデータ管理する場合、long型日時が有効ですが、日時をインタフェースで受け取る場合、String型日時であることが多い。GPS受信機の標準インタフェースNMEAフォーマットのString日時を、long型日時に変換する方法を紹介します
アプリに対応していないGPSロガーの利用や位置情報を扱うアプリの開発やテストの際にNMEAフォーマットのGPSデータを疑似ロケーションすることで、GPSから位置情報を受信することなく、位置の移動をシミュレーションするサービス型アプリです
フロアジャッキは梃子の原理と油圧で動作しています。フロアジャッキで一番多い故障がオイル漏れです。オイル漏れの原因はOリングの劣化で負荷のかかるメインピストンは2~3年でダメになります。メインピストンのOリングを交換する方法を紹介します。
退職後も加入していた健康保険の任意継続の期間満了(最大2年間)となり、国民健康保険に加入しました。任意継続から、国民健康保険に加入する際に必要な書類やその入出方法、手続きの時期などを詳しく説明します。
Viewの背景(background)を修飾するshape要素(drawable)には、ストローク線(stroke)の色をグラデーションにすることはできません。layer-list要素を使用して枠線の色をグラデーションにする方法を紹介します
Spinnerのドロップダウンでナビゲーションバーを表示させない
全画面モードでシステムバー(ナビゲーションバーやステータスバー)を非表示にしていても、Spinnerのドロップダウンでシステムバーが表示されます。この現象を回避するシステムバーを非表示にするカスタムSpinnerの実装方法を紹介します
Roomのマイグレーションでは変更前テーブルのスキーマ情報が必要です。変更前テーブルのスキーマ情報がない状態でマイグレーションするとマイグレーションが失敗します。exportSchema=falseでマイグレーションする方法を紹介します
RoomはオープンソースデータベースSQLiteを抽象化レイヤとして提供するライブラリです。データベースの操作や定義、SQLの実行など、SQLiteを最大限に活用することが可能です。Roomの導入から使用方法をソースを参考に説明します
次の項目で問題が見つかりました。 権限の使用が申告されていないか、 間違って申告されています
Google社より「ご対応のお願い: GooglePlayのポリシーをアプリが遵守していません」といったタイトルのメールが届き、リリースが否承認となりました。ポリシー違反を特定する方法と対処から、ポリシー違反の解消までの流れを説明します
2つの動画を再生位置を合わせ・並べて・同時に再生する動画再生アプリ(Duel)を使って、ライバルと比較、外撮りと車載の比較、過去の自分と比較について、比較する目的や確認するポイントから、比較する内容に適したアプリの使用方法を説明します
Androidスマホは、MP4形式しか動画ファイルは再生できません。Android13から、Apple標準オーディオ形式の音楽ファイルが再生できなくなっています。FFmpegでMP形式に変換して、Androidで再生する方法を紹介します
ConoHaのレンタルサーバの基本サービスで毎日バックアップが取得していますが、WordPressのデータの一部だけリストアすることができません。WordPressの一部のファイルだけ復元できるバックアップを無料で構築する方法を紹介します
選択できる機能メニューの数が多い場合、メニューを階層化して表示することはユーザビリティの向上として有効な手段です。ActionMenuViewを使用したメニューでSubMenuを使用したメニューを階層化の実装方法について、説明します
フルード交換は基本的に、二人一組。ブレーキを踏む人、キャリパーのエアブリーダーを開け閉めする人。そんなブレーキフルードのエア抜きも、工夫次第で特殊な工具も必要なく、"ひとり"で"簡単"にできる方法とクラッチフルードの交換方法を紹介します。
散布図は実験結果などのエビデンスでよく用いられるグラフですが、2つの軸をX軸とY軸と捉えると、平面図の描画への応用が可能です。MPAndroidChartのScatterChartを使用して、散布図の特長を生かしたGUIを紹介します
円グラフはデータ全体の「内訳」を円の角度で表現するグラフで、折れ線グラフや棒グラフほど使用する機会はありません。円グラフの特長を生かした簡単なGUIを、MPAndroidChartのPieChartを使用して実装します。
エンジンに悪影響があるチリ、ほこり、砂などをブロックしているのがエアフィルターです。エアフィルターには、使い捨てのものから、洗浄して再利用できるものがあります。再利用できる湿式エアフィルターのメンテナンス方法について説明します。
MPAndroidChartの折れ線グラフは特性上、グラフ線が見やすくするために背景が白色です。このため、折れ線フラフの後ろのレイヤーにオブジェクトを配置すると背景に隠れて見えなくなります。グラフ線の背景を透過させる方法を説明します
Androidのナビゲーションバーには標準で戻るボタンが配置されています。前の画面に戻るためのボタンですが、アプリ側で処理を記述する必要があります。タブレイアウトの画面遷移で戻るボタンによるヒストリーバック機能の実装方法を紹介します
標準のアプリ画面では上側にステータスバー、下側(横画面では右側)にナビゲーションバーが表示されます。動画や画像、ゲームなどのコンテンツでは、全画面で表示したくなる場面があります。システムバーを非表示や透明化した全画面表示の方法を紹介します
ジョイント部分が破損したドライブシャフト、ジョイントを交換するだけで再使用できます。ブーツが破けてグリスが漏れている場合もあります。残念ながら、この状態では車検に通りません。ドライブシャフトのアウタージョイントを交換する方法を説明します
個人データを扱うアプリを欧州経済領域と英国に配信する場合はGDPR対応は必須ですが、個人データを扱っていなくてもAdMobやFirebaseを使用しているアプリでアプリの配信先に欧州経済領域と英国が含まれている場合はGDPR対応が必要です
Android14対応<br>(非推奨のCriteriaの対応)
CriteriaクラスはAndroidアプリで位置情報を扱うときに使用します。精度、電力使用量などに基づいて、最適な位置プロバイダを選択します。しかし、Android14では、Criteria クラスが非推奨となり、代替クラスもない状況です
Android14対応 (フォアグラウンドサービスタイプは必須)
Android14のコア機能の変更のひとつ「フォアグラウンドサービスタイプは必須」に対応していないアプリは、フォアグラウンドサービスを起動したときにアプリが落ちます。フォアグラウンドサービスタイプは必須の対応方法について、紹介します
Android14対応(非推奨のonBackPressed)
これまで戻るボタンの処理は、onBackPressedに記述していました。onBackPressedはAndroid13から非推奨、Android14から使用不可になりました。Android14での戻るボタンの処理の実装を紹介します
ExoPlayerは音声や動画のローカル再生のほか、DASH、SmoothStreamingなど、MediaPlayerではサポートされていない機能があります。Media3のExoPlayerを使用して、動画や音楽を再生する方法を紹介します
Spinnerは前回選択したアイテムと同じアイテムを選択した場合、onItemSelectedのイベントが発生しません。アイテム選択時に前回と同じアイテムであっても選択を検知できるCustomSpinerを実装する方法を紹介いたします
動画からのサムネイルの作成方法は、サムネイルユーティリティで動画ファイルからサムネイル用のBitmapを取得し、ファイル出力します。作成対象の動画ファイルが多い場合は、処理に時間がかかるので、作成済みの動画は再作成しないなどの工夫が必要です
Duelは動画で"ライバルとの差を可視化する"コラージュアプリです。スマホやタブレットにある動画ファイルにチャプタを設定して、画面尿に2つの動画を並べてシンクロ再生、スロー再生でどこで差がついか、操作と動作を確認、どう変化したか確認します。
画面が回転する際、画面が再起動します。ダイアログを表示中に再起動が発生すると、アプリがクラッシュします。タブレットでは本体側の設定(画面の自動回転)が優先され、アプリで画面の向きが固定できません。タブレットでは画面の回転の対応が必須です。
Androidで日本語を含むデータを出力したファイルをWidowsで読み込むと文字化けします。文字コードがAndroidがUTF-8でWidowsがShift_JISだからです。AndroidでShift_JISに変換する方法を説明します。
WSAを使用すれば、Androidスマホがなくても、Windows 11のPCさえあれば、Androidネイティブアプリを動作させることが可能になります。Windows 11でAndroidアプリを実行する方法について、紹介します。
TextToSpeech は、テキストから音声合成して、再生や音声ファイルを作成できるライブラリです。画面上に通知メッセージをテキスト出力する感覚で、テキストを指定して音声で案内することが可能となります。実用的な音声案内の実装を説明します
セルは回るが、エンジンがかからない場合、点火系と燃料系のいずれかに問題があります。エンジン不動の原因を特定する方法と主な原因となるデストリビュータの修理方法について説明します
GoProやInsta360などのWi-Fiデバイスに接続する場合、システムサービスのWifiManagerとConnectivityManagerを使用してネットワーク接続します。アプリからWi-Fiデバイスに接続する実装を紹介します
フローティングアイコンのImageViewの表示切り替えはOnTouchListenerのonTouchでも可能ですが、インタフェースを経由して操作する場合、ImageViewを再生成する必要があります
トランクにあるスペアタイヤを外すと窪みに水が溜まっていることに気が付いた。走行中に足回り(リアショックのアッパーマウント)がら水が入り込んだ?走行していないのにトランクが濡れている。走行していないのに車内に水が入りこむ場合、雨漏りしています...
Application Overviewの第二弾はツール、音楽、仕事効率化、動画プレイヤー、ショッピングなどのアプリについて、サポートアプリのアドオン利用によるアプリ間のデータ共有や機能の相互利用をDFD(データ・フロー図)で説明します
パスワード入力など、入力した文字の目隠し表示が必要なケースがあります。目隠し表示の入力はEditViewのInputTypeでTYPE_TEXT_VARIATION_PASSWORDを指定します
IPアドレスはピリオド(.)で区切られた3桁までの数値が4つで構成します。PatternとMatcherを使用して、フォーマットをチェックします
MiniTool Screen Recorderを使って、アプリ画面と機器を操作している様子をWebカメラで録画、録画中の画面に直接、矢印や線などの図形、テキストや音声などを追加して、操作説明動画の作成をワンストップで行う方法を紹介します
アプリ間でファイルを連携する場合、出力側と入力側でファイル指定のユーザ操作が必要となります。今回は、アプリ間でのファイル連携をワンストップで実現する、ファイルを起動引数とした別アプリ(サービス)を起動する方法を紹介します
走行軌跡や速度などの走行データを記録するロガーアプリについて、サポートアプリのアドオン利用によるアプリ間のデータ共有や機能の相互利用をDFD(データ・フロー図)で説明します
端末にアプリがインストールされていない場合にGooglePlayに誘導など、アプリがインストール済みか確認したい。PackageManagerを使用して、端末にアプリがインストールされているか1ラインのコードで確認する方法を紹介します
アプリ開発のオープンソースライセンス管理をgradleプラグインを使って自動化する方法を紹介します。license-tools-pluginを使用しているオープンソースのライセンス情報をHTMLで出力、ライセンス情報をアプリで表示します
iOSアプリの時間選択で採用されているドラムロール式ユーザインタフェースをAndroidアプリで実装します。AndroidのドラムロールはNumberPickerを使用します。NumberPickerで数値以外を扱う場合に工夫が必要です
車載動画の撮影にInsta360に代表される360°撮影できるアクションカムを使用するとどうなるか?リフレーミングで視点の異なる動画の書き出しを使って、これまでの車載動画では視ることができなかった世界(視界)とその活用法を紹介します
『AcamRs』は"Open Spherical Camera API"に対応したアクションカメラにWi-Fi接続して録画をリモートで操作するアプリです。アプリ画面から操作のほか、コマンドによるサービス起動操作が可能です。
SwitchCompatで選択した状態をユーザに伝える場合、状態をテキストで表示することが望ましいです。SwitchCompatのテキスト表示は左側でそのままでは不自然です。SwitchCompatのテキスト表示を右側にする実装を紹介します
フリーレイアウトで自由に移動できるViewGroupの実装を紹介します。layoutを使用することで移動は可能ですが、親ViewGroupが子ViewGroupやViewの位置を確定させているため、再描画の際に元の位置に戻る問題が発生します
ItemTouchHelperのスワイプ(onSwiped)は、アイテムがリストから消滅した時点でイベント発生します。削除前に確認メッセージを表示する場合に違和感があります。今回はスワイプ操作でアイテムがリストから消滅しない実装を紹介します
Google Playアプリはアプリをアップデートする際にインストール可能かチェックします。OSバージョンやハードウェア要件を満たさない場合に「このアプリはお使いのデバイスに対応しなくなりました」が表示され、アップデートができなくなります
データベースからから受け取ったデータ構造がListの検索結果をKeyを使ってアクセスしたい。この場合、検索結果をMapに変換する実装がスマートです。Listに格納されたデータをワンラインでMapに変換する方法を紹介します
QRコードのスキャンはスマホのカメラ機能して、撮影した画像からQRコードを検出し、デコードします。GooglePlay開発者サービスにスキャン機能があり、簡単にQRコードのスキャン機能が簡単に実装できます。オートスキャンの使用やカメラの権限リクエストが不要です
動画やゲームなどのコンテンツでは、全画面で表示したくなります。全画面モードでナビゲーションバーを非表示にした場合、ワンタップでホーム画面に戻ることができなくなります。今回は全画面モードでナビゲーションバーの戻るボタンとホームボタンを使用できる実装を紹介します
URLの交換をスマホで行う場合に便利なQRコード。QRコードはURLの交換に特化したインタフェースではありません。任意のデータをQRコードで表示して、データ交換の手段として使用できます。任意の文字列をQRコードで表示する実装を紹介します
横画面で入力キーボードを表示すると全画面にソフトキーボードが表示されて、入力項目が隠れる現象が発生します。EditTextのIMEオプションを指定することで入力項目が隠れる現象を回避することが可能です。
エッジ ツー エッジが無効化できない場合、ステータスバーやナビゲーションバーをアプリ領域に被らないようにレイアウトを制御する必要があります。Android14以下においてもエッジ ツー エッジを適用することでレイアウト制御の共通化が図れます
スマホアプリのプロモーション動画を作成する場合、スマホの縦長画面の動画編集に対応している動画編集ソフトを選択することが重要です。宣伝や操作説明のプロモーション動画を作成する際に使用しているMiniTool MovieMakerをご紹介します
ArchiveHubはGoogleドライブにある走行データを計測ラインを使ってタイム計測を行い、集計したタイム計測結果はアプリの画面で確認したり、Googleスプレッドシートで共有でき、画面で走行データのグラフ表示や走行データの比較表示やモーション再生ができる
バッテリーを交換したばかりなのにエンジンがかかりくい。燃料ポンプの作動音(ジージー)がするけど、セルモーターの作動音(キュルキュル)がしない場合、セルモーターが故障している可能があります。DIYでセルモーターを交換する方法を紹介します
ブレーキローターを流用する場合、ポン付けできるものから、加工が必要なものまで様々。ブレーキローターの流用で4穴のブレーキローターを5穴に加工する方法を紹介します
小数点以下の数値を含む演算での数値は2進数で表現し、演算します。2進数で表現できない数値は近似値で扱われ、これが誤差が生じる原因です。今回はBigDecimalを使用して、有効桁数の範囲で誤差が発生しない演算の実装について説明します
Android5で画面に表示している内容をメディアストリームとしてキャプチャするMediaProjectionが追加されました。今回はMediaProjectionで実行中の他のアプリ画面のスクリーンショットを取得する実装を紹介します
アプリの操作してる様子を録画したい、アプリの画面のスナップショットを取得したいなど、操作パネルを他のアプリの上に重ねて表示したいケースがあります。他のアプリの上に重ねて操作パネル(フローティングアイコン)を表示する実装を紹介します
Storage Access Framework(SAF)のデフォルトフォルダはEXTRA_INITIAL_URIで指定しますが、EXTRA_INITIAL_URIに指定するフォルダ表記を誤ると正しく動作しません。フォルダの表記を説明します
ActivityのライフサイクルでonDestroyが実行された状態を終了、onPauseまで実行された状態を中断と区別します。サービス起動で画面をバックグランドに移動させ、サービス終了で画面をフォアグランドに呼び戻す実装方法を紹介します
Photo and Video Permissions policyではREAD_MEDIA_IMAGES、READ_MEDIA_VIDEOの使用を制限します。Photo Pickerでスマホ本体にある画像や動画を選択する実装を紹介します
Android15ではアプリのtargetSdkを35にすると、強制的にエッジツーエッジが適用され、アプリの表示領域にステータスバーとナビゲーションバーが被さって表示されます。アプリの対応として、エッジツーエッジを無効にする方法を紹介します
imgsawは画像やPDFをビューアに表示、ズーム&スクロールと枠(フレーム)を調整して、トリミング加工した画像ファイルを生成します。加工した画像ファイルは他のアプリからファイルピッカーで選択させたり、Googleドライブなどに出力できます
PopupMenuのメニューを表示する位置がリスナーを設定したオブジェクトの左下または右下です。メニューのアイテムの間隔が広く、メニュー操作の対象がわかりにくい。PopupMenuの表示位置とメニューの間隔を調整する実装方法を紹介します
ブレーキペダルの位置は調整できますが、アクセルペダルの位置は調整できないことが多い。ブレーキペダルの位置の調整は、遊びとストロークに影響がでるため、ブレーキペダルはベストな位置に調整して、アクセルペダルの位置を調整する方法をオススメします
Google社より「ご対応のお願い: GooglePlayのポリシーをアプリが遵守していません」といったタイトルのメールが届き、リリースが否承認となりました。ポリシー違反を特定する方法と対処から、ポリシー違反の解消までの流れを説明します