tag:blogger.com,1999:blog-88848517962140432152024-03-14T20:54:32.383+09:00林檎を剥いて歩こう (Android)アンドロイド実機 + プログラミングの記録yazaki.kenjihttp://www.blogger.com/profile/02481482049339764105noreply@blogger.comBlogger104125tag:blogger.com,1999:blog-8884851796214043215.post-50293538681842539012023-06-17T19:02:00.000+09:002023-06-17T19:02:05.221+09:00ECナビ<div style="font-size:12px; line-height:180%;">
<p style="margin-bottom:10px;">ネットショッピングのポイントが実質3倍になる方法!?<br>すでに700万人以上が得をしているポイントサイト「ECナビ」をはじめるべき5つの理由!</p>
<p style="margin-bottom:10px;">▼登録無料!まずは登録してみよう!▼<br><a href="https://ecnavi.jp/invite?id=tk0t3&ref=62">https://ecnavi.jp/invite?id=tk0t3&ref=62</a></p>
<p style="margin-bottom:10px;">--------------------------------------------------------</p>
<p style="margin-bottom:10px;">1. ECナビはポイント還元率業界トップクラス!<br>ネットショッピングが圧倒的にお得に!</p>
<p style="margin-bottom:10px;">普段のお買い物でも、購入金額に応じてお店のポイントがもらえたりしますよね。よりたくさんのポイントがもらえるよう、ポイントアップキャンペーンなどの日を狙って買い物する、という人も多いんじゃないでしょうか?</p>
<p style="margin-bottom:10px;">実はECナビを経由してネットショッピングをすると、ショップポイント(お店のポイント)とは別にECナビポイントももらえます!つまりポイントの2重取りが可能!</p>
<p style="margin-bottom:10px;">●例えばポイント還元率1%のお店の場合<br>ショップポイント1% + ECナビポイント1% =実質ポイント2倍!</p>
<p style="margin-bottom:10px;">●さらに支払いにポイント還元率1%のクレジットカードを使うと・・・<br>ショップポイント1% + ECナビポイント1% + クレジットカードポイント1% =実質ポイント3倍!</p>
<p style="margin-bottom:10px;">それぞれのポイント還元率はショップや時期によっても変わってきますが、毎回のショッピングでポイントの2重取り、3重取りが可能!</p>
<p style="margin-bottom:10px;">ECナビはポイント還元率が業界トップクラス!<br>いつものネットショッピングもECナビから行うだけで、劇的にお得に!!</p>
<p style="margin-bottom:28px;">▼ECナビへの無料登録はこちら▼<br><a href="https://ecnavi.jp/invite?id=tk0t3&ref=62">https://ecnavi.jp/invite?id=tk0t3&ref=62</a></p>
<p style="margin-bottom:18px;">--------------------------------------------------------</p>
<p style="margin-bottom:10px;">2. ECナビならカード発行の特典も2重取り!<br>大量ポイント案件で一気にポイントを貯めよう!</p>
<p style="margin-bottom:10px;">ECナビは、カード発行などでのポイント還元も業界トップクラスなことで有名です。</p>
<p style="margin-bottom:10px;">ECナビからカード発行をすれば、カード会社の特典に加えて、ECナビポイントももらえます。キャンペーンで1万円以上相当のポイントがもらえることも!</p>
<p style="margin-bottom:10px;">ほかにも、ECナビには大量ポイントがもらえる案件がたくさん。<br>お得なキャンペーンも多くあるので、要チェックです!</p>
<p style="margin-bottom:10px;">▼ECナビへの無料登録はこちら▼<br><a href="https://ecnavi.jp/invite?id=tk0t3&ref=62">https://ecnavi.jp/invite?id=tk0t3&ref=62</a></p>
<p style="margin-bottom:10px;">--------------------------------------------------------</p>
<p style="margin-bottom:10px;">3. ECナビポイントをマイルに交換すれば月間20,000マイルも夢じゃない!?知る人ぞ知る毎年タダで海外旅行に行く方法とは</p>
<p style="margin-bottom:10px;">ECナビポイントは現金をはじめさまざまな交換先が用意されていますが、最終的には航空会社のマイルにも交換することが可能です。</p>
<p style="margin-bottom:10px;">飛行機にまったく搭乗せずに年間30万マイル貯める人も!?</p>
<p style="margin-bottom:10px;">ポイントをたくさん貯めてマイルに交換、ビジネスクラスでのリッチな海外旅行を目指そう!</p>
<p style="margin-bottom:10px;">▼ECナビへの無料登録はこちら▼<br><a href="https://ecnavi.jp/invite?id=tk0t3&ref=62">https://ecnavi.jp/invite?id=tk0t3&ref=62</a></p>
<p style="margin-bottom:10px;">--------------------------------------------------------</p>
<p style="margin-bottom:10px;">4. 「カード発行とかハードルが高すぎ・・・」でも大丈夫!<br>ECナビなら毎日ポイントが貯まるコンテンツがいっぱい!<br>実質無料の飲食モニターや商品モニターも!</p>
<p style="margin-bottom:10px;">ECナビにはショッピングやカード発行以外にも手軽にポイントが貯まるコンテンツがたくさんあります。</p>
<p style="margin-bottom:10px;">たとえば・・・</p>
<p style="margin-bottom:10px;">●簡単なアンケートに回答するだけ<br>企業から届く簡単なアンケートに回答するだけでポイントがもらえます。<br>あなたの回答が企業のマーケティングに反映されるかも!?<br>また、座談会形式のアンケートは報酬が高額なのでガッツリ稼げます。</p>
<p style="margin-bottom:10px;">●簡単なミニゲームに参加するだけ<br>楽しい釣りやクレーンゲームなど、簡単に遊んでポイントがもらえます。</p>
<p style="margin-bottom:10px;">●アプリのダウンロードやお得なサービスに無料会員登録をするだけ<br>スマホのアプリをダウンロードしたり、無料会員登録や資料請求をするだけでポイントがもらえます。</p>
<p style="margin-bottom:10px;">●モニター体験でも<br>飲食店をはじめビューティー、お買い物など様々なモニター体験でポイントがもらえます。100%還元の案件なら実質無料!?</p>
<p style="margin-bottom:10px;">その他にもさまざまなコンテンツでどんどんポイントが貯まります!</p>
<p style="margin-bottom:10px;">▼ECナビへの無料登録はこちら▼<br><a href="https://ecnavi.jp/invite?id=tk0t3&ref=62">https://ecnavi.jp/invite?id=tk0t3&ref=62</a></p>
<p style="margin-bottom:10px;">--------------------------------------------------------</p>
<p style="margin-bottom:10px;">5. 「そんなうまい話あるわけない・・・あやしいんじゃないの?」ECナビは700万人が利用する運営実績15年以上の超優良ポイントサイトの一つです!</p>
<p style="margin-bottom:10px;">「ポイントサイトっていろいろあるけど、怪しくない?」<br>「なんか面倒くさそう」<br>そんなイメージを持っていませんか?</p>
<p style="margin-bottom:10px;">ECナビは運営実績15年以上、上場企業の100%子会社が運営する超優良ポイントサイトの一つです。<br>プライバシーマークも取得しているので安心安全にポイントが貯められます。</p>
<p style="margin-bottom:10px;">▼ECナビへの無料登録はこちら▼<br><a href="https://ecnavi.jp/invite?id=tk0t3&ref=62">https://ecnavi.jp/invite?id=tk0t3&ref=62</a></p>
<p style="margin-bottom:10px;">--------------------------------------------------------</p>
<p style="margin-bottom:10px;">★さらに、いまなら・・・★</p>
<p style="margin-bottom:10px;">記事内リンクからの会員登録と本人認証完了で、「ECナビポイント1,500ポイント」をもれなくプレゼント!</p>
<p style="margin-bottom:10px;">いろいろなペースで稼げちゃうポイントサイト「ECナビ」!ポイントを貯めてお小遣い稼ぎをしたい人には絶対オススメです♪</p>
<p style="margin-bottom:10px;">▼登録無料!まずは登録してみよう!▼<br><a href="https://ecnavi.jp/invite?id=tk0t3&ref=62">https://ecnavi.jp/invite?id=tk0t3&ref=62</a></p>
</div>yazaki.kenjihttp://www.blogger.com/profile/02481482049339764105noreply@blogger.com0tag:blogger.com,1999:blog-8884851796214043215.post-17810153124068305402018-09-23T00:28:00.001+09:002020-02-16T13:39:22.938+09:00Android Studio でリリースビルド時にエラーアンドロイドスタジオでリリースビルドしたらエラーで失敗!<br />
<br />
Could not find com.android.tools.lint:lint-gradle:26.1.4.<br />
Searched in the following locations:<br />
file:/C:/Users/~~/AppData/Local/Android/Sdk/extras/m2repository/com/android/tools/lint/lint-gradle/26.1.4/lint-gradle-26.1.4.pom<br />
file:/C:/Users/~~/AppData/Local/Android/Sdk/extras/m2repository/com/android/tools/lint/lint-gradle/26.1.4/lint-gradle-26.1.4.jar<br />
file:/C:/Users/~~/AppData/Local/Android/Sdk/extras/google/m2repository/com/android/tools/lint/lint-gradle/26.1.4/lint-gradle-26.1.4.pom<br />
file:/C:/Users/~~/AppData/Local/Android/Sdk/extras/google/m2repository/com/android/tools/lint/lint-gradle/26.1.4/lint-gradle-26.1.4.jar<br />
file:/C:/Users/~~/AppData/Local/Android/Sdk/extras/android/m2repository/com/android/tools/lint/lint-gradle/26.1.4/lint-gradle-26.1.4.pom<br />
file:/C:/Users/~~/AppData/Local/Android/Sdk/extras/android/m2repository/com/android/tools/lint/lint-gradle/26.1.4/lint-gradle-26.1.4.jar<br />
gradle/26.1.4/lint-gradle-26.1.4.jar<br />
https://jcenter.bintray.com/com/android/tools/lint/lint-gradle/26.1.4/lint-gradle-26.1.4.pom<br />
https://jcenter.bintray.com/com/android/tools/lint/lint-gradle/26.1.4/lint-gradle-26.1.4.jar<br />
Required by:<br />
project :app<br />
<div>
<br /></div>
というエラー。<br />
<br />
下記ブログを参照。<br />
<a href="http://no4393.blog77.fc2.com/blog-entry-3221.html" target="_blank">http://no4393.blog77.fc2.com/blog-entry-3221.html</a><br />
<br />
Android Studio フォルダから、よく似たものをコピーして対応しているようだ。<br />
<br />
要は、pomファイルとかが、6つのディレクトリのうちのどこかにあればいいのかな。<br />
<br />
自分の環境だと、<br />
C:\Users\~~\AppData\Local\Android\Sdk\extras<br />
にm2repositoryフォルダが無かった。<br />
<br />
変に既存フォルダがあるところに上書きしてもヤバそうと思ったので、むしろ何も無いextras 直下にm2repository フォルダごとコピーしてみることに。<br />
<br />
自分のアンドロイドスタジオをインストールしている場所である<br />
D:\Android\Android Studio\gradle<br />
直下にあるm2repositoryフォルダを、<br />
C:\Users\~~~\AppData\Local\Android\Sdk\extras<br />
直下にコピー。<br />
<br />
無事にエラーなくビルドできた!<br />
<br />
<br />
余談。<br />
前回もリリースAPKを作る時に躓いたし、やっぱり大変ね。yazaki.kenjihttp://www.blogger.com/profile/02481482049339764105noreply@blogger.com0tag:blogger.com,1999:blog-8884851796214043215.post-49197665803743478822018-09-21T16:46:00.000+09:002018-09-22T18:54:39.355+09:00failed to find target with hash string エラーアンドロイドスタジオで、プロジェクトをインポートした時に、<br />
<br />
failed to find target with hash string 'Google Inc.:Google APIs:21'<br />
<br />
というエラーが出る。<br />
<br />
Tools - SDK Manager - Show Package Details にチェック。<br />
(※チェックしないと個別に選択できない。)<br />
21にあたる Google APIs を選択してインストール。<br />
<br />
※なおSDK Manager の項目自体が出てこないこともあり、その時は別プロジェクトから起動か、直接?起動。yazaki.kenjihttp://www.blogger.com/profile/02481482049339764105noreply@blogger.com0tag:blogger.com,1999:blog-8884851796214043215.post-52519750144693276572018-09-20T14:42:00.000+09:002018-09-22T18:49:19.898+09:00プライバシーポリシー<a href="https://play.google.com/store/apps/developer?id=CloverQ" target="_blank">CloverQ</a> の公開アプリのプライバシーポリシー<br />
<br />
・ネットワーク接続の表示、ネットワークへのフルアクセス<br />
アプリ内広告(AdMob,adstir,AMoAd,Nend,i-mobile)で必要とされています。<br />
AdMob のプライバシーポリシーは<a href="https://policies.google.com/privacy" target="_blank">こちら</a>です。<br />
adstir のプライバシーポリシーは<a href="https://ja.ad-stir.com/privacy.html" target="_blank">こちら</a>です。<br />
AMoAd のプライバシーポリシーは<a href="http://www.amoad.com/privacy/" target="_blank">こちら</a>です。<br />
Nend のプライバシーポリシーは<a href="https://www.fancs.com/privacy" target="_blank">こちら</a>です。<br />
i-mobile のプライバシーポリシーは<a href="https://www.i-mobile.co.jp/privacy.html" target="_blank">こちら</a>です。yazaki.kenjihttp://www.blogger.com/profile/02481482049339764105noreply@blogger.comtag:blogger.com,1999:blog-8884851796214043215.post-79353016121946946302016-08-06T16:44:00.001+09:002020-02-16T13:41:31.442+09:00Admob のために、Google Play Services を導入しばらく前から、Admob にて、Google Play Services を使うようになっていたが、更新も手間なので、放置していた。<br />
<br />
しかし、古いSDKは、2016年9月15日でサポート終了とのメールが来ている。<br />
<br />
というわけで、更新!<br />
<br />
<br />
エクリプスで作成していたアプリだが、さすがにAndroidStudio を導入。<br />
<br />
インポートすると、エラーは出たが、メッセージをみて、インストールとかしてれば、あっさり完了。<br />
<br />
※一応、書き換えが必要なものもあった。参考<br />
<a href="http://qiita.com/shoma2da/items/1e84807809e7d1f4803b" target="_blank">http://qiita.com/shoma2da/items/1e84807809e7d1f4803b</a><br />
<br />
<br />
ビルドできたので、リリースAPKを作ろうとしたところ、エラー。<br />
<br />
Error:The number of method references in a .dex file cannot exceed 64K.<br />
<br />
どうも dex ファイルを64K以下にしろ、みたいな。<br />
<br />
そんなん言われても、導入したの Google Play Services だけだし…。<br />
<br />
<br />
サポート終了を知らせるメールには、<br />
compile 'com.google.android.gms:play-services:9.0.2'<br />
と記述せよと書いてある。<br />
<br />
<a href="https://developers.google.com/android/guides/setup" target="_blank">https://developers.google.com/android/guides/setup</a><br />
を見てみると、やはり<br />
compile 'com.google.android.gms:play-services:9.4.0'<br />
という書き方をしている。<br />
<br />
が、どうもこれがマズイっぽい。<br />
<br />
<br />
以下を参考に<br />
<a href="http://qiita.com/niusounds/items/f9a0ab3cbe07878ed8f6" target="_blank">http://qiita.com/niusounds/items/f9a0ab3cbe07878ed8f6</a><br />
<br />
compile 'com.google.android.gms:play-services<span style="color: red;">-ads</span>:9.4.0'<br />
<br />
と書いてみた(赤字が追加部分)ところ、すんなり通った!<br />
<br />
<br />
そんなわけで、1年以上ぶりのアプリ更新、こちらのブログも更新となりました。yazaki.kenjihttp://www.blogger.com/profile/02481482049339764105noreply@blogger.com0tag:blogger.com,1999:blog-8884851796214043215.post-28270689943260878192015-08-18T11:14:00.001+09:002015-08-24T14:22:27.480+09:00PHPでの「->」の意味PHPの「->」の意味が分からなかったが、下記ページで理解できた。<br />
<br />
参照URL<br />
<a href="http://www.phppro.jp/qa/536" target="_blank">http://www.phppro.jp/qa/536</a><br />
<a href="http://tdak.hateblo.jp/entry/20140406/1396773476" target="_blank">http://tdak.hateblo.jp/entry/20140406/1396773476</a><br />
<br />
<br />
つまり、javaでいう「.」のこと。<br />
<br />
Hogeクラスがあったとして、<br />
Hoge hoge = new Hoge();<br />
hoge.Hogeクラスの変数やメソッド<br />
みたいに呼び出すのと同じ。yazaki.kenjihttp://www.blogger.com/profile/02481482049339764105noreply@blogger.com0tag:blogger.com,1999:blog-8884851796214043215.post-64135252009790492542015-08-07T17:16:00.001+09:002015-08-10T15:01:09.990+09:00Android の apk ファイルの解析・MAC<br />
<br />
1. ~.apk のファイルの拡張子を .zip に変更し解凍する。<br />
<br />
2. classes.dex ファイルを jar ファイルに変換する。<br />
dex2jar というツールを使用する。<br />
<br />
※詳細は以下のページを参照しました。<br />
<a href="http://qiita.com/le_skamba/items/04c0a0cfe420be862122#%E3%82%B9%E3%83%86%E3%83%83%E3%83%973-dex--jar" target="_blank">http://qiita.com/le_skamba/items/04c0a0cfe420be862122#%E3%82%B9%E3%83%86%E3%83%83%E3%83%973-dex--jar</a><br />
<br />
<a href="http://sourceforge.net/projects/dex2jar/" target="_blank">http://sourceforge.net/projects/dex2jar/</a><br />
<br />
ポイントとしては、実行権限をつけてあげる。<br />
(該当のフォルダまで cd で移動して、chmod +x *)<br />
Mac だと、拡張子 .sh のファイルを使う。<br />
(d2j-dex2jar.sh classes.dex)<br />
<br />
3. jar ファイルの拡張子を .zip に変更し解凍する。<br />
<br />
4. ~.class ファイルを java ファイルに変換する。<br />
使用するツールは、上記サイトを参考に、JavaDecompiler を使う。<br />
<br />
<a href="http://jd.benow.ca/" target="_blank">http://jd.benow.ca/</a><br />
<br />
JD-GUI<br />
にてMAC なら jd-gui-osx-1.4.0.tar をダウンロード。<br />
実行して、class ファイル選択すると、まとめて表示される。<br />
<br />
<br />
・最近は、<br />
androguard を使うのが、良いらしい。<br />
<br />
<a href="https://code.google.com/p/androguard/wiki/Installation" target="_blank">https://code.google.com/p/androguard/wiki/Installation</a><br />
<br />
が、導入方法がさっぱり分からん。yazaki.kenjihttp://www.blogger.com/profile/02481482049339764105noreply@blogger.com0tag:blogger.com,1999:blog-8884851796214043215.post-75801415810003124392015-07-30T10:48:00.002+09:002015-07-30T10:48:54.780+09:00MAC でデフォルトのテキストエディタを変更する方法ファイルを右クリックから、「このアプリケーションで開く」から選択しても、開けるもののデフォルトになってくれない。<br />
<br />
以下参照<br />
<a href="http://www.lastday.jp/2011/10/25/mac-open-favorite-app-as-default" target="_blank">http://www.lastday.jp/2011/10/25/mac-open-favorite-app-as-default</a><br />
<br />
同じく右クリックから、「情報を見る」で、一覧から「このアプリケーションで開く」の項目を選択し、アプリケーションを選択後、「すべてを変更…」押下で、選択したものがデフォルトになってくれる。yazaki.kenjihttp://www.blogger.com/profile/02481482049339764105noreply@blogger.com0tag:blogger.com,1999:blog-8884851796214043215.post-90524625334299722122015-07-29T15:30:00.001+09:002015-07-29T15:33:13.314+09:00Ruby での加算子よくある「++」はないので、<br />
hoge += 1<br />
とする。<br />
<br />
それどころか、へたに++なんていれると、次の行が文法エラーとなったり、次の行の何かと連結できてしまうと、おかしな挙動になる。<br />
++がダメ、とピンポイントで指摘してくれないので、ハマった。。yazaki.kenjihttp://www.blogger.com/profile/02481482049339764105noreply@blogger.com0tag:blogger.com,1999:blog-8884851796214043215.post-65098208024643597642015-07-28T09:46:00.002+09:002015-07-28T09:46:15.399+09:00staticandroid にて、変数をstaticで持たせるのは基本NGとのこと。yazaki.kenjihttp://www.blogger.com/profile/02481482049339764105noreply@blogger.com0tag:blogger.com,1999:blog-8884851796214043215.post-547083913007078562015-07-15T15:33:00.003+09:002015-07-15T15:33:44.065+09:00画面を縦に固定マニフェストの activity タグに以下を記載。<br />
android:screenOrientation="portrait"yazaki.kenjihttp://www.blogger.com/profile/02481482049339764105noreply@blogger.com0tag:blogger.com,1999:blog-8884851796214043215.post-50853487397970207802015-07-15T14:25:00.002+09:002015-07-17T16:47:40.861+09:00シングルトン以下のサイトを参考に。<br />
<a href="https://sites.google.com/site/androidappdojo/home/lesson/section04/section0405" target="_blank">https://sites.google.com/site/androidappdojo/home/lesson/section04/section0405</a><br />
<br />
クラスを使うときの new を呼び出し元ではなく、呼び出し先のそのクラス自身に任せる的な。<br />
<br />
コンストラクタは、private にして制限。<br />
getInstance() で呼び出すように書く。<br />
<br />
とはいえ、コンストラクタがpublic じゃないと、画面回転させた時などに落ちる。yazaki.kenjihttp://www.blogger.com/profile/02481482049339764105noreply@blogger.com0tag:blogger.com,1999:blog-8884851796214043215.post-39014131378937799952015-07-14T11:05:00.000+09:002015-07-28T10:01:46.869+09:00ダイアログ フラグメント<script src="https://gist.github.com/YazakiKenji/c637a63e475694ff98a1.js"></script>
<script src="https://gist.github.com/YazakiKenji/19c4b6b426a7142a10d1.js"></script>
ダイアログ出すにも、DialogFragment を使えということなのでメモ。<br />
※参考URL<br />
<a href="http://developer.android.com/reference/android/app/DialogFragment.html#AlertDialog" target="_blank">http://developer.android.com/reference/android/app/DialogFragment.html#AlertDialog</a><br />
<a href="http://quesera2.hatenablog.jp/entry/2014/04/09/003146" target="_blank">http://quesera2.hatenablog.jp/entry/2014/04/09/003146</a><br />
のFragment→Fragment→Fragment のところ。<br />
<a href="http://www.fkmsoft.jp/blog/software/android/fragment/dialog_2.html" target="_blank">http://www.fkmsoft.jp/blog/software/android/fragment/dialog_2.html</a><br />
<br />
アラートダイアログ以外を表示するには、
new AlertDialog.Builder の部分を変更。<br />
ただし表示するものによって、必須の指定があるので、要確認。<br />
たとえば、ドラムロールのTimePickerDialog だと、「~~ extends DialogFragment implements TimePickerDialog.OnTimeSetListener」として、Override で onTimeSet が必須になる。あとなぜか return new ~~~ .create(); じゃだめで、変数宣言して、それをリターンしてやらないとエラーだった。<br />
<br />
また、.setView のところ、上記の例では EditText のウィジェットをjavaで生成して入れているが、これも好きなもの(seekbarとか)を入れられるし、レイアウト(XML)で凝ったものでも作ってインフレートしてからセットすることも試してないが、可能かと。<br />
<br />
なお、フラグメントから呼び出したダイアログフラグメントより、呼び出し元のフラグメントへ処理を返す方法も記述。<br />
呼び出す際に setTargetFragment しておき、呼び出し先で、getTargetFragment にて取得し、onActivityResult で返してやる。<br />
<br />
※最後に。
上記の例では、フラグメントと、ダイアログフラグメントを分離しているが、<br />
フラグメントクラス内にダイアログフラグメントを記述する場合は、public static とする。<br />
「public class MyAlertDialogFragment extends DialogFragment」<br />
↓<br />
「public static class MyAlertDialogFragment extends DialogFragment」<br />
意味としては、これは親クラスとは関係ないよ、という宣言。yazaki.kenjihttp://www.blogger.com/profile/02481482049339764105noreply@blogger.com0tag:blogger.com,1999:blog-8884851796214043215.post-1655754960748781462015-07-10T11:43:00.002+09:002015-07-10T11:43:35.844+09:00Java メモ・数値を文字に変換<br />
String str = Integer.toString(num);yazaki.kenjihttp://www.blogger.com/profile/02481482049339764105noreply@blogger.com0tag:blogger.com,1999:blog-8884851796214043215.post-37592355357858656282015-07-10T11:14:00.002+09:002015-07-10T16:52:03.970+09:00Calendarカレンダークラスで日時などを指定する方法<br />
<br />
・共通<br />
Calendar calendar = Calendar.getInstance();<br />
calendar.setTimeInMillis(System.currentTimeMillis());<br />
calendar.setTimeZone(TimeZone.getDefault());<br />
<br />
・毎日<br />
例えば11時10分0秒なら、<br />
calendar.set(Calendar.HOUR_OF_DAY, 11);<br />
calendar.set(Calendar.MINUTE, 10); //02などはいけるが、なぜか08以降はダメ。0不要か。<br />
calendar.set(Calendar.SECOND, 0);<br />
※時間指定のみなので、毎日となる。<br />
※なお、秒を指定しないと1分程度遅れた。0秒指定で端末時間でジャスト起動。<br />
<br />
・比較<br />
各変数は、以下とする。<br />
現在時刻:calendarNow<br />
設定時刻:calendarSet<br />
int num = calendarNow.compareTo(calendarSet);<br />
if(num>0){<br />
Log.d("time","現在時刻が、設定時刻より進んでいる。");<br />
}<br />
<br />
・メソッドなど詳しく紹介しているサイト<br />
<a href="http://www.techscore.com/tech/Java/JavaSE/Utility/8/" target="_blank">http://www.techscore.com/tech/Java/JavaSE/Utility/8/</a><br />
add と roll の違いなど。<br />
<br />
・翌日<br />
今日のCalendar.DAY_OF_YEARがsetされているor最初から何も指定していないとして、<br />
calendar.add(Calendar.DAY_OF_YEAR, 1);<br />
すれば、翌日。<br />
Calendar.DAY_OF_YEAR は一年のうちで、今日が何日目か。<br />
なお年末でも大丈夫。<br />
<br />
・時刻取得<br />
get メソッドで取得。何もsetしてなければ、現在時刻を取ってくる。<br />
int hour = calendarNow.get(Calendar.HOUR_OF_DAY);<br />
※何かsetしていると、その設定したものを取ってくる。<br />
<br />
・正確さ<br />
秒まで指定しないと、1分くらい遅れた。(0秒指定で、分変わりジャスト)<br />
<br />
・備考<br />
calendar.set(Calendar.MINUTE, 5);<br />
みたいに数字を書く。<br />
たとえば05という風に書くと、08からなぜかエラー。yazaki.kenjihttp://www.blogger.com/profile/02481482049339764105noreply@blogger.com0tag:blogger.com,1999:blog-8884851796214043215.post-36680820105334548092015-07-09T11:06:00.001+09:002015-07-24T15:26:01.015+09:00R.id.hoge とかのリソースを動的に読み込む方法以前の記事で、最後に触れている<br />
<a href="http://yazakikenji.blogspot.jp/2011/12/imageview.html" target="_blank">http://yazakikenji.blogspot.jp/2011/12/imageview.html</a><br />
<br />
が、再掲。<br />
<br />
例。<br />
ImageView imageView;<br />
<br />
imageView = (ImageView) getView().findViewById(R.id.imageView1);<br />
<br />
同じことを動的にやるには、<br />
String str = "1";<br />
<br />
imageView = (ImageView) getView().findViewById(getResources().getIdentifier("imageView"+str,"id",getActivity().getPackageName()));<br />
<br />
実際には、上記のstrは数字(連番)で持たせて処理の中で、forループなどで使う形になると思う。<br />
<br />
・getIdentifier の詳細<br />
第一引数は、XML ファイルで定義したIDを入れる。<br />
同一の名前で最後に数字を連番でつけるのが楽か。(名前が違うと当然エラーになるので注意!XML側でつけたIDの命名規則が一部違っているとかもそう。)<br />
第二引数は、<br />
R.id なら"id"<br />
R.drawable なら"drawable"<br />
となる。<br />
第三引数は、パスの指定だが、それはパッケージ名となる。getPackageName() を使わず、直書きでもいい。なおフラグメントで使うことを想定して、getActivity() している。yazaki.kenjihttp://www.blogger.com/profile/02481482049339764105noreply@blogger.com0tag:blogger.com,1999:blog-8884851796214043215.post-9795408614567896862015-07-07T17:48:00.001+09:002015-07-07T17:50:20.197+09:00レイアウトのクリック可能範囲と、バックグラウンドの反応java 側にて、OnClickListener を設定したり、<br />
Layout (XML) 側にて、クリック可能なものを設置した場合、<br />
クリック可能範囲が、(なんと表現すべきか)XMLタグの深い方(中にある方)が優先される模様。<br />
<br />
なので、例えば表のLinearLayout のbackground に、クリックしたら色が変わるような設定のファイルを置いても、(もちろんclickable="true")<br />
その内部のLinearLayout でもTextView、ImageView でも、クリック可能になった場合、そのクリックイベントが優先されるため、表のLinearLayout の設定は生きない。<br />
<br />
もっとも、何かしら隙間があれば、そこをタッチすれば、そこだけは反応してくれるが。yazaki.kenjihttp://www.blogger.com/profile/02481482049339764105noreply@blogger.com0tag:blogger.com,1999:blog-8884851796214043215.post-66941901763381980402015-07-07T15:30:00.000+09:002015-07-07T17:48:59.968+09:00Fragment の作成、遷移フラグメント
<script src="https://gist.github.com/YazakiKenji/f2c71744e80883d56477.js"></script>
<script src="https://gist.github.com/YazakiKenji/59436c97472062eaff85.js"></script>yazaki.kenjihttp://www.blogger.com/profile/02481482049339764105noreply@blogger.com0tag:blogger.com,1999:blog-8884851796214043215.post-30993223817425503012015-07-07T15:16:00.003+09:002015-07-07T17:49:18.893+09:00ListFragment の使い方リストフラグメント。<br />
実装するクラスに、extends ListFragment して、以下。<br />
<br />
<script src="https://gist.github.com/YazakiKenji/6e6e030a509b84ecc72f.js"></script>
fragment_test.xml<br />
id のとこ、android:list とするのね。
<script src="https://gist.github.com/YazakiKenji/98591387ce17afaff0c2.js"></script>
test.xml は省略。
<br /><br />
なお、リストをクリックすると、別のフラグメントが起動するよう処理を書いている。<br />
その際、newInstance() などと書いているが、この手の実装は次の投稿で。yazaki.kenjihttp://www.blogger.com/profile/02481482049339764105noreply@blogger.com0tag:blogger.com,1999:blog-8884851796214043215.post-48855756016489429412015-07-06T14:31:00.001+09:002015-07-06T14:31:32.062+09:00ListView で文字を縦に2つ並べた時に、最初にタッチすると、なぜか間に区切り線が出てくる件。なんだかよく分からないが、Layout の高さを指定したら、直った。yazaki.kenjihttp://www.blogger.com/profile/02481482049339764105noreply@blogger.com0tag:blogger.com,1999:blog-8884851796214043215.post-35425258336751892422015-07-06T14:28:00.001+09:002015-07-06T15:52:58.985+09:00LinearLayout で作成したリスト的なものに、ListViewで使われる罫線を入れる。また、タッチした時に背景の色が変わるようにする。<div>
・罫線<br />
layout 配下に適当な名前で、以下を作成。</div>
<div>
hoge.xml</div>
<div>
<View xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="1dp" android:background="?android:attr/listDivider" /></div>
<div>
<br /></div>
<div>
あとは、差し込みたい場所に</div>
<div>
<include layout="@layout/hoge" /></div>
<div>
で入れる。<br />
<br />
<br />
・タッチ時背景色変更<br />
プロジェクト作成時に、自動的に?作られていたものを設定。<br />
android:background="@drawable/stamp_item_bg"<br />
<br />
stamp_item_bg.xml<br />
<?xml version="1.0" encoding="utf-8"?><br />
<selector xmlns:android="http://schemas.android.com/apk/res/android" ><br />
<item android:state_pressed="true"<br />
android:drawable="@drawable/stamp_item_bg_pressed" /><br />
<item android:drawable="@android:color/transparent" /><br />
<br />
</selector></div>
yazaki.kenjihttp://www.blogger.com/profile/02481482049339764105noreply@blogger.com0tag:blogger.com,1999:blog-8884851796214043215.post-50842970488628023472015-07-02T14:00:00.003+09:002015-07-02T14:00:21.559+09:00リストにヘッダーをセットした場合の注意点リスト表示のヘッダー、フッターに何かを挿入したい場合。<br />
<br />
TextView textView = new TextView(getActivity());<br />
textView.setText("This is Header");<br />
getListView().addHeaderView(textView, null, false);<br />
<br />
アダプターの追加<br />
setListAdapter(adapter);<br />
<br />
みたいに、<br />
setListAdapter() する前に addHeaderView() してあげる必要がある。<br />
<br />
しかし、ここで注意点。<br />
<br />
このままだと、他画面に移って、また上記の画面に戻った場合、エラーで落ちる。<br />
理由は、既にsetListAdapter() されてるから addHeaderView() できません。<br />
<br />
つまり、アダプターが破棄されずに残っている。<br />
<br />
これを回避するには、<br />
@Override<br />
public void onDestroyView() {<br />
super.onDestroyView();<br />
setListAdapter(null);<br />
}<br />
<br />
このように、onDestroyView() にて、アダプターをnull してやる。<br />
<br />
なお、アウトオブメモリー対策にもなる模様。yazaki.kenjihttp://www.blogger.com/profile/02481482049339764105noreply@blogger.com0tag:blogger.com,1999:blog-8884851796214043215.post-17641134818531100802015-07-02T13:48:00.004+09:002015-08-10T15:04:33.483+09:00AndroidStudio で、Uploading file で止まる。ビルド中、<br />
Uploading file<br />
local path: ~~~.apk<br />
remote path: ~~~<br />
で止まってしまう現象。<br />
<br />
どうもソースツリーとかで他人のプロジェクトを触っている時に発生。<br />
<br />
メニューから、<br />
Build -> Clean Project<br />
をして、直ったっぽい。<br />
<br />
と思ったら、再発。<br />
<br />
プロジェクトのルートで、<br />
./gradlew clean packageDebug<br />
で様子見。<br />
<br />
…また再発。<br />
<br />
どうもUSBケーブルが悪かったようで、交換したら直った。<br />
<br />
追記)<br />
交換後も、たまに再発。<br />
どうも端末にもよるらしい。<br />
また、人に聞いたら、やっぱり端末によっては、かなり頻発するらしい…yazaki.kenjihttp://www.blogger.com/profile/02481482049339764105noreply@blogger.com0tag:blogger.com,1999:blog-8884851796214043215.post-35815299068003669562015-06-29T18:14:00.000+09:002015-06-29T18:14:01.516+09:00言語をまたいだcookieの使用php で<br />
setcookie('hoge', '1', time() + 3600, '/');<br />
でセット。<br />
<br />
JavaScript で<br />
cookies.js なんかを入れれば<br />
var cookies = docCookies.getItem("hope");<br />
<div>
で取得して使える。</div>
yazaki.kenjihttp://www.blogger.com/profile/02481482049339764105noreply@blogger.com0tag:blogger.com,1999:blog-8884851796214043215.post-15198201877572033872015-05-28T16:44:00.001+09:002015-06-24T14:33:03.140+09:00特定の画像上に、相対的に何か要素を配置したい場合<div class="relative"><br />
<img src="test.jpg"><br />
<div class="absolute"><br />
<table><br />
~<br />
</table><br />
</div><br />
</div><br />
<br />
<br />
.relative{<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>position: relative;<br />
width: 500px;<br />
margin: 0px auto;<br />
}<br />
.absolute{<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span> position: absolute;<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span> top: 100px;<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span> left: 100px;<br />
}<br />
<br />
<br />
これでテーブルが置かれる場所は、画面トップから100px、左から100pxではなく、<br />
test.jpg 画像のトップから100px、左から100pxとなる。yazaki.kenjihttp://www.blogger.com/profile/02481482049339764105noreply@blogger.com0