2017年8月19日 (土)

androidアプリをWindowsデスクトップから起動

20170819 Windows上のandroidアプリを動作させるエミュレータは沢山あるが使ったことはない。
もっぱらGoogle純正のChrome拡張のARC Welderを使っている。
androidアプリの起動は二段階を踏んでいた。
1.Chromeブラウザ起動
2.アプリメニューからandroidアプリ起動

それが最近デスクトップに起動アイコンをおけることを発見した。
アプリメニューのアイコンを左クリックで「ショートカットの作成」でデスクトップやスタートメニューに置けるのだ!
これならWindowsアプリを区別なく使える。
 

| | コメント (0) | トラックバック (0)

2017年8月11日 (金)

ようやく我がNexus6にandroid7.1.1がやって来た!

android7.1.1、提供が延期されていたが本日我がNexus6に表示された。
早速アップグレードしてみた。
試した変更点は
1.通知領域に『設定』が表示
2.アプリのショートカット機能、
主にGoogle純正アプリ、アイコン長押しでショートカット起動
3.電源ボタン長押しで、「電源を切る」の他に『再起動』追加
4.ファイルマネージャー標準搭載
設定から「ストレージ」でファイルマネージャー起動
5.「スマートストレージ」追加、
ストレージの容量が減ってきたらGoogleフォトにバックアップ済みの写真や動画を自動で削除する
6.設定から複数のアプリをチェックして選び一括削除
「ストレージ」→「ストレージを管理」→「今すぐ空き容量を増やす」をタップして削除したいすべてのアプリにチェック
「○○MBを解放」→「端末から○○MBを削除します」→「削除」すぐにアンインストールが完了、恐ろしい!

| | コメント (0) | トラックバック (0)

2017年8月 4日 (金)

浮動小数点計算の誤差

androidアプリ「時間電卓/TimeCalc」の計算精度がおかしい!
原因は浮動小数点は2進数に変換するわけであるが小数点以下の10進数を変換するときにに誤差が生じてしまうためのようだ。
こういう現象があるために正確な計算をするにはBigDecimalを使うのだそうだ!
BigDecimalは初めて使うので
1.BigDecimalの生成
BigDecimal one = new BigDecimal("1.00");
BigDecimal 型には、BigDecimal.ZERO や BigDecimal.ONE も用意されている
2.BigDecimalから変換
int num1 = big1.intValue();
long num2 = big2.longValue();
double num3 = big3.doubleValue();
String str = big4.toString();
3.BigDecimalへ変換
BigDecimal big = BigDecimal.valueOf(num);
4.BigDecimalの演算
BigDecimal add = big1.add(big2);
BigDecimal subtract = big1.subtract(big2);
BigDecimal multiply = big2.multiply(big3);
BigDecimal divide = big1.divide(big3, 2, BigDecimal.ROUND_HALF_UP);
除算は注意、赤字がないと割り切れないときにエラー発生
5.BigDecimalの比較
BigDecimal value = new BigDecimal("0.0");
if ( value.compareTo(BigDecimal.ZERO)==0 ) System.out.println("true");
if (three.compareTo(four) < 0) System.out.println("result1 : < ");
if (three.compareTo(three) == 0) System.out.println("result2 : = ");
if (four.compareTo(three) > 0) System.out.println("result3 : > ");
 

| | コメント (0) | トラックバック (0)

2017年7月24日 (月)

ようやく公開に漕ぎつけた!

Device20170725084806 androidアプリ「時間電卓/TimeCalc」がGoogle Playにようやく公開に漕ぎつけた。

このアプリの開発動機はマラソンのラップタイムの計算だ!
5時間÷42.195km=7分6秒
これがしたかったが普通の電卓ではできない。

簡単なので作ってしまえを取り掛かったが苦戦した。
 

| | コメント (0) | トラックバック (0)

2017年7月19日 (水)

「時間電卓/TimeCalc」開発で嵌ったところ

久しぶりにandroidアプリの開発「時間電卓/TimeCalc」で嵌ってしまった。
1.ファイル書込みで出来ない!
調べてみたら今まで何の気もせず「他アプリから書込み可能」MODE_WORLD_READABLEにしてた。
OutputStream out=context.openFileOutput(fileName,Context.MODE_WORLD_READABLE);
これが最新バージョンで使えなくなったようだ。
「他アプリからアクセス不可」MODE_PRIVATEにしたら書き込み出来た。
OutputStream out=context.openFileOutput(fileName,Context.MODE_PRIVATE);
2.Button文字が大文字になってしまう
これもデフォルトではAPI14以降大文字になってしまうようだ!
小文字にするにはAPI14以降に下記を追加する必要がある。
if(Build.VERSION.SDK_INT >= 14){
Key_H.setAllCaps(false);
}
3.Action Barが表示されない
Actiob Barが搭載されていると思ってBlank Activityを使用したが、実行してもActiob Barが表示されない!
実はActiob Barに似ているTool Barだった。
これを削除したら表示されるようになったが、それならEmpty Activityでよいと作り直したが背景色が気に入らない。
できれば動的変更をしたいと探ったができないようなのでAction BarをやめてButtonで作った。
4.Build gradleをいじり過ぎたら異常終了
古い端末も対象にしようとTarget SdkVersionを弄り回したら動作しなくなったので下記をベースに再構築した。
(1)Minimum SdkVersion
動作する最低レベルのSDKを選択します。
ここで選択したバージョンより低いレベルのSDKではアプリがインストールできない状態になります。
(2)Target SdkVersion
メインターゲットとする端末のSDKのバージョンを設定します。
Android SDKでは前方互換性の機能があり、新しいAndroidのバージョンの端末で古いアプリを実行した場合、画面のデザインや外観が変わる機能があります。
・targetSdk < 端末のAPIレベル=targetSdkVersionバージョンのテーマを使う
・targetSdk > 端末のAPIレベル=端末のAPIレベルのテーマを使う

(3)CompileSdkVersion

どのSDKのバージョンのコンパイラでビルドするかを指定します。
コンパイラを追加する場合はAndroid SDK Managerで必要となるバージョンのSDK Platformのパッケージをインストールしておく必要があります。
コンパイラは新しいものほど改善が進んでいるため通常は最新のコンパイラを指定します。
 
5.公開が出来ない
Google Play Consleの仕様が変わってアプリ署名ができない!
 

| | コメント (0) | トラックバック (0)

2017年7月17日 (月)

Play Consoleのアプリ署名が変わった!

androidアプリに新作「時間電卓/TimeCalc」なるものを作ったけど公開できない!

Google Play Consoleの仕様が変わって今迄はandroid studioでGenerate signed APKで署名したものをアップロードすればよかったのだが、
今回はGoogle Play Console側でも署名ができるようになっていた。
この署名は使わなくともいいようだが今迄のアップロード先が判らず探し回っているうちにGoogle Play Consoleの署名を有効にしてしまったようだ!
この有効宣言は二度とも出せないのでGoogle Play Console側の署名をしないとアップロードができない。
アップロードの入口があったのでアップロードすると署名がないと言われてしまう。
ギブアップで下記の問い合わせをした。
 
下記に6回のやり取りでようやく理解できた。
従来のアプリ署名鍵ともうひとつ新規にアップロード鍵を作成するが必要である。
1.アップロード鍵の作成方法
アップロード鍵の作成方法はアプリ署名鍵と同じ要領で違うパスワードでつくる。
Android Studioのメニューバーで、[Build] > [Generate Signed APK] をクリックします。
プルダウンでモジュールを選択し、[Next]をクリックします。
[Create new] をクリックして、新しいキーとキーストアを作成します。
[New Key Store] ウィンドウで、キーストアとキーに次の情報を指定します
Keystore
Key store path: キーストアを作成する場所を選択します。
google drive keystore

Password: キーストアの安全なパスワードを作成し、確認します。
●●●●●●●●(アプリ署名鍵)
Key
Alias: キーを識別する名前を入力します。
●●●●●●●●●●
Password: キーの安全なパスワードを作成し、確認します。キーストアのパスワードとは異なるパスワードにする必要があります。
●●●●●●●●●●(アップロード鍵)
Validity (years): キーの有効期間を年単位で設定します。キーは少なくとも 25 年間は有効であるため、アプリの使用期間全体を通じて同じキーを使用してアプリのアップデートに署名できます。
25
Certificate: 証明書の所有者に関する情報を入力します。この情報はアプリには表示されませんが、APK の一部として証明書に含まれます。
First&Last Name;: AKIO ABE
Organizational; Unit: GARAKUTAKEN
Organization;: YAMATONOIE
City or Locality;: YAMATOSHI
State or Province;: KANAGAWAKEN
Cuntry Code;;JP
 
2.アップロード方法
そして既存アプリと新規アプリでそれぞれ下記の方法でアップロードする。

Screenshot12(1)既存アプリでまだApp singingにご登録いただいていないものは、[リリース管理] > [アプリの署名] ページを開くと、添付のscreenshot1, 2のようにまずアプリ署名鍵を登録するためのご案内が表示されます。
このご案内に沿ってもともとアプリの署名に使用していたアプリ署名鍵を登録いただき、その後新しくアップロード鍵を作成してAPKに署名し、リリースページにアップロードしていただくと、両方の鍵が?[アプリの署名] ページに登録されます。
こうして2つの鍵の証明書が登録されますと手続き完了となり、以降のアップデートの際はアップロード鍵で署名を行っていただくことになります。
 
(2)新規の場合は最初にアプリのリリースページでApp Singingを有効にするかどうか聞かれます。
Screenshot3_2 その際、有効にチェックを入れるだけで、署名鍵は自動的に登録されますので、デベロッパー様では今回実施いただいた通りアップロード鍵のみご用意いただき署名していただきますと、添付のscreenshot3のように両方の鍵が登録され手続き完了となります。
こちらも、以降のアップデートはアップロード鍵で署名を行っていただくことになります。
 
3.アップロード鍵の署名方法
Android Studioのメニューバーで、[Build] > [Generate Signed APK] をクリックします。
「Generate Signed APK」
key store path;c:\User\LENOVO\Googleドライブ\keystore\avedroid.keystore(アップロード鍵)
key store password;●●●●●●●●(アプリ署名鍵)
key alias;●●●●●●●●●●
key password;●●●●●●●●●●(アップロード鍵)

「Enter Master Password」
Password;●●●●●●●●(アプリ署名鍵)
 
(参考)アプリの署名

| | コメント (0) | トラックバック (0)