blitz-time アプリ開発ブログ

Androidアプリ開発などのTips集

【Kotlin入門】Realmを使用するとエラーがでるが文字化けでわからない!「Task :app:kaptDebugKotlin FAILED」と出ている。

Realmを使ったデータベース管理の勉強を始めました。 教科書に載っているとおりにコーディングし、実行したところ、見たこともないエラーに遭遇しました。 C:\User\Projects\KotlinFirstStep\MyScheduler\app\build\generated\source\kapt\debug\io\realm\**…

【Kotlin入門】Smart cast to '***' is impossible, because '***' is a complex expression.

「はじめてのAndroidプログラミング」でフラグメントの勉強中です。現在、第8章の「フラグメントを使ったスライドショーアプリ」に取り組み中。はじめてのAndroidプログラミング 第4版作者:金田 浩明発売日: 2019/04/20メディア: Kindle版 class MainActivi…

【Kotlin入門】Caused by: kotlin.TypeCastException: null cannot be cast to non-null type

「はじめてのAndroidプログラミング」でフラグメントの勉強中です。現在、第7章の「フラグメントで動物ずかんを作ろう」に取り組み中。はじめてのAndroidプログラミング 第4版作者:金田 浩明発売日: 2019/04/20メディア: Kindle版ActivityからFragmentから…

【Kotlin入門】Null can not be a value of a non-null type Int

Kotlinでは基本的には「null」をあまり意識する必要がありません。 逆に、明示的に「null」を設定してしまうと、 Null can not be a value of a non-null type Int null非許容型のIntにnullにすることはできません のようなエラーになります。コード fun mai…

【Kotlin入門】エルビス演算子

エルビス演算子、初めて聞くワードです。「?:」が、その「エルビス演算子」になります。内容 Kotlinでは値にnullを利用可能な「null許容型」という変数を定義することができます。 「null許容型」の変数は、型に「?」を加えることで宣言できます。 null許容…

【Androidアプリ開発】画面起動時のソフトウェアキーボード(IME)を非表示にしたい

EditTextを使った文字入力を持った画面を表示した場合、そのEditTextに入力フォーカスがあたり、ソフトウェアキーボード(IME)が自動的に起動します。入力前提の画面であればその挙動が良いのですが、「既存のデータを閲覧し、必要であれば編集する」というよ…

【Kotlin入門】クラスメソッドのオーバーライド

派生クラスで親クラスのメソッドをオーバーライドします。内容 メソッドをオーバーライドする際にはメソッドに"override"を付加します。また、派生元のクラスメソッドは"open"である必要があります。"open"がないと、”final and cannot be overridden”エラー…

【Kotlin入門】派生クラス

作成したクラスから派生クラスを作成します。内容 Personクラスの派生クラスとしてAdultクラスを作成します。 AdultクラスではmTypeを上書きします。 Kotlinでは通常はクラスを派生させることができませんが、"open"を付加することで、クラスを派生させるこ…

【Kotlin入門】クラスの定義

クラスの定義の基本形です。コード class Person(val mName: String, val mAge: Int) { } fun main(args: Array<String>) { val p = Person("田中はじめ",45) println( p.mName ) println( p.mAge ) } 結果 田中はじめ 45クラスの初期処理はinit内で行うことができま</string>…

【Kotlin入門】関数

関数の定義は次のように書きます。内容 fun 関数名 ( 引数名 : 型名 ) : 戻り値の型名 { return 戻り値 } コード fun sub( a : Int ) : String{ var ret : String if( a > 0 ){ ret = "正の数" }else if( a < 0 ){ ret = "負の数" } else{ ret = "0" } retur…

【Kotlin入門】Expecting a top level declaration

「Expecting a top level declaration」というコンパイルエラーがでて悩んでしまいました。問題はただの、「{」忘れでした。。。。数十分費やしてしまいました。まだまだですねぇ。。。

【Kotlin入門】do-while文 繰り返し

do-while文を利用した繰り返し処理は次のように書きます。内容 iが0から9まで繰り返す。コード fun main(args: Array<String>) { var i = 0 do{ println(i) i++ }while( i < 10 ) } 結果 0 1 2 3 4 5 6 7 8 9</string>

【Kotlin入門】while文 繰り返し

while文を利用した繰り返し処理は次のように書きます。内容 iが0から9まで繰り返す。コード fun main(args: Array<String>) { var i = 0 while( i < 10 ){ println(i) i++ } } 結果 0 1 2 3 4 5 6 7 8 9</string>

【Kotlin入門】for文 繰り返し

繰り返し処理を行うにはfor文を利用します。 C言語では、 for( int i=0;i のように書いていたfor文の繰り返し処理は次のように書きます。内容 iが0から9まで繰り返す。コード fun main(args: Array<String>) { for(i in 0..9){ println(i) } } 結果 0 1 2 3 4 5 6 7 8</string>…

【Kotlin入門】Kotlinの文法を勉強するためのAndroid Studio活用方法

Androidアプリの開発をしていますが、今後のAndroid開発は『Kotlin』が主流になります。Javaより扱いやすくなるということですが、これまでずっとJavaを使っていたため、なかなか移行する機会がありませんでしたが、やっと重い腰を上げてKotlinの習得に取り…

【Androidアプリ開発】JPEGファイルからサムネイル写真を取得

アプリ内で端末内の写真の一覧を表示する際、写真が多いと非常に時間がかかります。 また、最近の端末の写真は高解像度なので、ファイルサイズも大きくなり、1枚当たりの処理時間もかかります。 撮影した写真は通常JPEGで保存されますが、そのデータ内にExi…

【Androidアプリ開発】ファイルをまとめてZip化(圧縮・解凍)

ファイルをバックアップ・復元するために、複数のファイルを圧縮・解凍する機能が必要です。 便利なオープンソースがあるので、そちらを活用します。github.com簡単な使い方はこのような感じです。 public class ZipUtils { Context mContext; public ZipUti…

【Androidアプリ開発】例外が発生しないJSONファイルのデータ読み込み

アプリ内での利用するデータファイルの形式としてJSONが多いですね。 各種サービスのWeb APIなどで取得するデータの形式にもJSONが使われていることが多いです。JSONObjectに読み込んだデータから指定のデータを取得する際、JSONObject.getString() や、 JSO…

【Androidアプリ開発】データのバックアップ・復元機能

アプリで利用しているデータをバックアップし、機種変更時に復元するような機能を入れたい。アプリのデータの保存はおおむね、以下の3種類です。 1) プレファレンス 2) データベース(SQLite) 3) 各種データファイル 各種ファイルのバックアップ 1) プレファ…

【Androidアプリ開発】写真のトリミング

撮影した写真から必要な個所だけを切り抜きたい場合は、外部アプリのトリミング機能を利用すると便利です。 // uri: 写真のUri private void showTrimImage( Uri uri ){ Intent intent = new Intent("com.android.camera.action.CROP"); intent.setDataAndTy…

【Androidアプリ開発】カメラ撮影を連続で実施

アプリからカメラアプリを起動して、撮影した写真を取り込むにはIntentを利用します。しかし、カメラアプリを起動し、撮影を終了すると、アプリも終了し、元のアプリに戻ってしまいます。カメラで撮影した写真を連続で取り込むには、カメラアプリでの撮影後…

【Androidアプリ開発】スクショした写真を検出する方法

最近のAndroid端末でよく、スクショをとると、通知バーに通知が来て、タップすると、そのスクショ写真を表示することができ、共有機能などを使って、メールに添付したりすることができますね。そんな機能をアプリに入れたいと思いました。 スクショした写真…

【Androidアプリ開発】Bitmapオブジェクトを指定パスにPNGファイルとして保存

Bitmapオブジェクトを指定パスにPNGファイルとして保存します。 static public boolean saveAsPngImage(Bitmap bmp, String strPath){ try { File file = new File(strPath); FileOutputStream outStream = new FileOutputStream(file); bmp.compress(Bitmap…