365連休

にわかのandroidとかの開発メモ。

Java

Javaでfinal宣言されたミュータブルオブジェクトをメンバに持つクラスはcloneできない

以下、私見です。 ミュータブルはCollectionなどの事、イミュータブルはStringなどの事 Javaのcloneはオブジェクト構造のコピーが作られる。 構造体のコピーみたいな感じ。 Javaにおいてプリミティブ値は参照を持たないから値がコピーされ、 オブジェクトは…

JavaのDateクラスとタイムゾーン

今更Dateクラス! Dateクラスにはローカルのタイムゾーンが適用される!!! でもgetTime()はGMT(≒UTC) import java.util.Date; public class HelloWorld{ public static void main(String []args){ //シリアル値から日付を取り出して再度Dateオブジェクト生…

【Self Stack Overflow】Javaで多重継承を行う方法

自問 Javaでクラスの多重継承を行う方法を教えてください。 ベストアンサー Javaで多重継承はサポートされない。 public static class H { String h = "hour"; void echo(){ System.out.println(h); } } public static class O { String o = "o'clock"; void…

【Self Stack Overflow】Javaで複数の戻り値(タプル)を持つメソッドを定義する方法

自問 Javaで複数の戻り値(タプル構造)を持つメソッドを定義する方法を教えてください。 ベストアンサー Javaのメソッドは1つの「プリミティブデータ型」または「クラス」しか返すことができない。 そこで、複数の値を持つクラスを返す方法を考える。 Java1.…

【Self Stack Overflow】Javaで16進数文字列を正しく数値及び数値型へ変換する方法

自問 Javaで16進数文字列を正しい数値及び数値型へ変換する方法を教えてください。 以下のコードはエラーになります。 Integer.parseInt("ffffffff", 16); //throws NumberFormatException Short.parseShort("ffff", 16); //throws NumberFormatException By…

【Self Stack Overflow】Javaで数値を16進数文字列へ変換する方法

自問 Javaで数値を16進数文字列へ変換する方法を教えてください。 ベストアンサー long型かint型の場合、Long.toHexString()またはInteger.toHexString()を使用する。 "0x"+Long.toHexString(-1L) //"0xffffffffffffffff" "0x"+Integer.toHexString(-1) //"0…

Java 外部からベースメソッド(super.)をコールする

継承クラスが親クラスを破壊する方法

Java 固定容量のLimitedSet

固定容量のHashSetが欲しくて、ググったらjavaのライブラリには無いみたいで、ArrayListを継承したりして実装する例があったが、Iteratorとか全部Overrideするとめんどくさい。 個人的に欲しかった機能は、固定容量のSetがあって、容量が足りなくなった時に…

Android Studio 3.5 直列処理Executorのサンプル

Executorは別スレッドで非同期処理をいくつも実行するのに役立つ。 ThreadPoolExecutorを使うとスレッドを再利用しつつ非同期処理を連続して行える。 Executor executor = new ThreadPoolExecutor( corePoolSize, //スレッド数 maximumPoolSize, //最大スレ…

Android Studio 3.5 MediaStoreから取得したデータの日付フィールドが西暦2/11/30!!??

MediaStoreは地雷原。だが一本道である。

ピンチ操作による拡大縮小やドラッグ移動ができるImageViewの実装方法(Android Studio)

①ピンチやドラッグを検出するOnTouchListenerを作る。②Matrixクラスのお勉強。③ピンチ操作に応じて座標やスケールを変更して描画するカスタムImageView。

【Javaジェネリクス】自身(継承クラス)を返す抽象メソッド、擬似自己型(自己参照型ジェネリクス)

abstract SubClass self(); //こういうことをしたい時の裏技

Android Studio 3.4でListViewを斜めスクロールする方法(今更感) Diagonal Scroll!!

ListViewでまさかの斜めスクロールを実現。Diagonal Scroll Sample Code!!

Android Studio 3.4でListViewおよびGridViewを使うサンプルコード

Androidでリスト形式のUIを使いたい場合、ListViewやGridViewが手ごろです。 しかし、データの表示には奇怪なAdapterクラスを使用しなければいけません。 個人的にAdapterはだいっっっっきらいですが、少しだけ打ち解けたのでサンプルコードを置いておきます…

AndroidにおけるListViewとAdapterの考察

Adapterばくはつしろ Adapterは特定のデータ構造(クラス)専用となるので、様々なサンプルにあるような データクラス、Adapterクラスを別ファイルで定義するより、 Adapterの内部クラスでデータ構造を定義 もしくは データ構造の内部クラスでAdapterを定義 す…

ListViewのAdapter

リスト形式のユーザインターフェースを使いたいだけなんです。 ①画面のレイアウト→リスト追加 ②データを流し込む たったこれだけなのになんでAdapterが必要なの? 一見、高機能だけど無駄に複雑化して実装するために必要なコードが数倍に増えてると思うんで…

【Java】getSubsequentOfLastIndexメソッドでファイル名から拡張子を取得する

そんなメソッドたぶん無いです。見つからないので作りました。 便利なものは得てしてシンプルです。 自己責任でご自由にお持ち帰りください。タダです。 static String getSubsequentOfLastIndex(@NonNull String target, @NonNull String delimiter) target…

Android Studio 3.4 Permission & AdMob & GDPRに対応したActivityのサンプル(EU の e プライバシー指令と一般データ保護規則)

自分用のサンプルコードとして、Permissionの取得、AdMobの表示、EUユーザ向けのGDPR対応の機能を持った単一アクティビティのひな形を作りました。個別には大体理解してるけど、「じゃあ全部くっつけたらどうなるの?」という実装案。ベストプラクティスとか…

EU の e プライバシー指令と一般データ保護規則(GDPR)

GDPR関係、出来たら後でまとめたい。まとめた EUユーザの個人情報の国外移転には同意が必要。 広告ユニットを含む場合、個人情報が広告プロバイダへ流れるため同意が必要。 アプリのサービスとして、個人情報をサーバへ送信する場合も同意が必要。 Playスト…

【解決】Android 4.4以下でDrawable Resource(ic_vector.xml)を使用するレイアウトがあると、実行時にandroid.content.res.Resources$Not-Found-Exceptionが発生する

前の記事の続きです。 適当に設定を書き換えているだけでは埒が明かないので、一から歴史を勉強してきました。 そもそもVector Drawableリソースを使えるようになったのはAPI21 Android5.0 Lollipopからで、それよりも前のバージョンでDrawableリソースを扱…

【事案】Android 4.4以下でDrawable Resource(ic_vector.xml)を使用するレイアウトがあると、実行時にandroid.content.res.Resources$Not-Found-Exceptionが発生する

解決編は次の記事を見てね。 Activityのレイアウトファイル内で、SeekBarにベクター形式のドローワブルリソースを使用したら、実行環境のAndroidバージョンによってアプリの起動に失敗するケースに遭遇。 LogCat say "android.content.res.Resources$NotFoun…

ずっとSENSOR_STATUS_UNRELIABLEのAndroid搭載センサー(# ゚Д゚)

表題の通りです。 安定の踏み抜き率。 センサーから測定値を取得するには、大体次のようなSensorEventListenerになると思います。 @Override public void onSensorChanged(SensorEvent event) { if (event.accuracy == SensorManager.SENSOR_STATUS_NO_CONTA…

Androidには同じタイプのセンサーが複数ある

表題の通り。 Sensorのリスナーでよくあるサンプルコードのようにループで登録しなかったらハマった。 //お手本 final List<Sensor> sensors = mSensorManager.getSensorList(Sensor.TYPE_ALL); for(Sensor sensor:sensors){ if(sensor.getType()==Sensor.TYPE_MAGNE</sensor>…

Camera.Parameters.getSupportedFocusModes()の戻り値をenumにしてみた。

android.hardware.cameraのCamera.Parameters.getSupportedFocusModes()の戻り値はParameters内にString定数として書いてありますが、enumが好みなのでまとめてみました。 /** Camera.Parameters.FOCUS_MODEをまとめたもの<br/>FOCUS_MODE.HOGE.equals()で比較を</br/>…

Javaの内部クラスのインスタンス化

android.hardware.CameraのCamera.Sizeをnewしようと思ったら、Android Studioのコード解析で Camera.Size size = new Camera.Size(100, 100); 'android.hardware.Camera' is not an enclosing class って叱られた。日本語でお願いします。 ' アンドロイド. …

Android Studioでアスペクト比を表すクラスを作ってみた

HashMapのキーにアスペクト比を設定したくて作ってみた。 Map<Aspect, HashSet<Camera.Size>> ↑こういうのをしたい コピペは自己責任で。 バグっても責任取れませんので。 Javaの事はよく知らないので、比較はfloatじゃなく100倍したintを使用。 コンストラクタでアスペクト比を計算して、</aspect,>…

Android Studio 3.4でリリースビルドからLog関数を削除する。ProGuard使います。

Log関数はリリース時に必要ないので、勝手に削除してビルドしてくれるかというと、そんなことはありません。 Logcatでログの出力を確認できます。 なので、明示的に削除する必要があります。 削除の方法については、ビルド時にProGuardというのをかませて一…

Android Studio 3.4でActivityとかのサブクラスを表示する。

ハイ、ラルキー! メニュー->Navigate->Hierarchyで全てのサブクラスが表示されます。 Hierarchyは階層って意味だそうです。 発音が全然ヒエラルキーじゃないのでカタカナ呼びはやめましょう。 ショートカットだとCtrl+Hです。ファイルやエディタから使えま…

【禁忌】Android Studio 3.4でパッケージ名を変更する【魔法】

注意! 禁忌魔法を行使すると世界が崩壊する恐れがあるため、イデア世界へコアエイドスデータのフルコピーを取っておくように。 ふっふ~ん 新しいプロジェクトつっくろ~ パッケージ名はスペシャルアプリケーションで! 完了ぽちっ なんかマニフェストのパ…

署名バージョンのV1(Jar署名)とV2(完全APK署名)って何?

リリースビルドして実機テストでもしよっかな~ Googleが再度署名するやつはまた今度。 とりあえず普通で 前に作ったキーストア持ってるもんね releaseでお願いします。 V1?V2?なにそれ? よくわかんないから完了で! ふぁ?日本語でおけ www.google.com …