実機端末の画面キャプチャ

実機端末の画面キャプチャ

実機の端末を用いてアプリケーションをデバッグする方法

を参考に
実機画面キャプチャを行って見ました

まず最初に Nexus7 や HTC J などの端末を
USB接続します

このときにUSBデバッグできるようになっているのが条件になります

Eclipse のDDMSを開いて

screen capturer をクリックすると
実機画面がでるので
あとは
save を押せば保存されます

ddms

ddms2

android の音量設定

android の音量設定

今回の実行結果は
htcj

音量を設定するには
android.media.AudioManager クラスの
setStreamVolum() を使う

音量を設定する前に、まず設定可能な値の範囲を
getStreamMaxVolum() で調べる

これは設定できる最大の値が
ストリームタイプにより異なるため

ストリームタイプは
STREAM_RING
着信音

STEAM_NOTIFICATION
通知音

STEAM_ALARM
アラーム音

STEAM_MUSIC
音楽

STEAM_SYSTEM
システム音

STEAM_VOICE_CALL
ボイス音

USE_DEFAULT_STREAM_TYPE
システムが使うデフォルト音

STEAM_DTMF
DTMF音

とりあえずテストで作成
プロジェクト名は
Volcontrol

Android 4.0.3 を対象に作成
実機検証で行うのはエミュレータが遅いため

実行には Nexus 7 と HTC J

まずレイアウトファイルをつくる
res/layout の上で
右クリック > new > other

Android XML Layout File
を指定

RootElement には
LinearLayout を指定

    <TextView 
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="音量設定テスト"/>

    <TextView 
        android:id="@+id/text"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"/>

を追加

次に MainActivity の変更

ActionBarActivity

Activity にして
Ctrl + shift + o でインポートを補完

		if (savedInstanceState == null) {
			getSupportFragmentManager().beginTransaction()
					.add(R.id.container, new PlaceholderFragment()).commit();
		}


	@Override
	public boolean onCreateOptionsMenu(Menu menu) {

		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		// Handle action bar item clicks here. The action bar will
		// automatically handle clicks on the Home/Up button, so long
		// as you specify a parent activity in AndroidManifest.xml.
		int id = item.getItemId();
		if (id == R.id.action_settings) {
			return true;
		}
		return super.onOptionsItemSelected(item);
	}

	/**
	 * A placeholder fragment containing a simple view.
	 */
	public static class PlaceholderFragment extends Fragment {

		public PlaceholderFragment() {
		}

		@Override
		public View onCreateView(LayoutInflater inflater, ViewGroup container,
				Bundle savedInstanceState) {
			View rootView = inflater.inflate(R.layout.fragment_main, container,
					false);
			return rootView;
		}
	}

はいらないので削除

あとは onCreate() の中に書いていく

まずtextView インスタンスを取得

		TextView text =(TextView)findViewById(R.id.text);

次にAudioManager インスタンス取得

		AudioManager manager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);

そして変数に表示する内容を格納

String.format() で
第1引数には表示する文
第2引数にはその内容を記述

String volInfo = String.format("STREAM_ALARM: %d/%d\n"
				+"STREAM_MUSIC: %d/%d\n"
				+"STREAM_NOTIFICATION: %d/%d\n"
				+"STREAM_RING: %d/%d\n"
				+"STREAM_SYSTEM: %d/%d\n"
				+"STREAM_VOLUM_CALL: %d/%d\n", 
				
				//各ストリームタイプごとの音量の現在値と最大値を得る
				manager.getStreamVolume(AudioManager.STREAM_ALARM),
				manager.getStreamMaxVolume(AudioManager.STREAM_ALARM),
				
				manager.getStreamVolume(AudioManager.STREAM_MUSIC),
				manager.getStreamMaxVolume(AudioManager.STREAM_MUSIC),
				
				manager.getStreamVolume(AudioManager.STREAM_NOTIFICATION),
				manager.getStreamMaxVolume(AudioManager.STREAM_NOTIFICATION),
				
				manager.getStreamVolume(AudioManager.STREAM_RING),
				manager.getStreamMaxVolume(AudioManager.STREAM_RING),
				
				manager.getStreamVolume(AudioManager.STREAM_SYSTEM),
				manager.getStreamMaxVolume(AudioManager.STREAM_SYSTEM),
				
				manager.getStreamVolume(AudioManager.STREAM_VOICE_CALL),
				manager.getStreamMaxVolume(AudioManager.STREAM_VOICE_CALL)
				);

		

そして、得られた情報を textview へ表示

text.setText(volInfo);

メディア再生音量の最大値を得るために

int maxVol = manager.getStreamMaxVolume(AudioManager.STREAM_MUSIC)

;

これは最大音量の半分にする計算に使う

media 再生音量を最大の半分にする

manager.setStreamVolume(AudioManager.STREAM_MUSIC, maxVol/2, AudioManager.FLAG_SHOW_UI);

AudioManager.FLAG_SHOW_UI

音量の調整をする

PhoneGapイベント

PhoneGapのイベント

PhoneGapでは、戻るボタンやメニューボタンの操作
オンライン、オフライン
サスペンド
レジュームなどの端末の状態の切り替えのタイミングで様々なイベントが利用できる

イベント処理は、以下のように記述する

$(document).on("backbutton",function(e){
  //戻る処理
});

PhoneGapで利用できるイベントは

backbutton
戻るボタンが押されたら実行

menubutton
メニューボタンが押されたら実行

searchbutton
検索ボタンが押されたら実行

online
ネットワークへ接続したら実行

offline
ネットワークが切断されたら実行

pause
他のアプリに切り替わったり、スリープしたら実行

resume
アプリを復帰したら実行

batterycritical
バッテリーがなくなりそうになったら実行

kindle 本を買ってみた

現場のプロが教えるWeb制作の最新常識 知らないと困るWebデザインの新ルール
を購入してみました

元々の購入のきっかけは最近のトレンドを知ること

そして学習するものを絞るため

ドットインストールである程度の基礎を学習することができるので
これで学習してから書籍を購入したり
サイトをみたほうが効率的

ただし、どれを重点をおいてやるかによって学習する効率も変わる

フレームワークを使えば効率は上がるけど
そもそもその元の言語が分かっていないとせっかくのフレームワークも
使いこなせないし、フレームワークに固定されるのは結構リスクが高い

当面、使いそうなものとしては
HTML
CSS
java script
jquery-mobile
レスポンシブweb サイト
compass
git

今回は、去年購入した kindle fire で購入

kindle で購入したものは
アプリを使うことで
Android でも ipod touch でも閲覧可能

電車での移動のときにも読めるし
お昼の休憩の合間にも見ることができるし
なによりかさばらないので
自宅でみるなら kindle や タブレット
出先でみるのなら kindle アプリとすれば
効率よく学習することができます

AndroidでPhoneGap

AndroidでPhoneGap

まずは、EclipseへADTプラグインをいれ
Android開発ができるようにする

次に、PhoneGapプラグインをインストール

https://svn.codespot.com/a/eclipselabs.org/mobile-web-development-with-phonegap/trunk/download/
からインストール

そして、
ツールバーのPhoneGapのアイコンをクリックして
ウィザードに従いPhoneGapプロジェクト作成

作成されたプロジェクトのAndroidmanifestにエラーがでたら
android:xlargeScreens=”true”
を削除する

あとは、
assets/www/

HTML
css
Javascriptで
Webアプリを作成する

PhoneGapのAPI

PhoneGapのAPI

Accelerometer
加速度センサーの値を取得

Capture
画像、ビデオ、音声などの取得、録音

Compass
方角の取得

Contacts
OS標準の電話帳、連絡帳の操作

File
端末のファイルの読み書き

FileTransfer
ネットワークを利用したファイルの取得、送信

GeoLocation
位置情報取得

Notification
バイブやビープ音、警告、確認メッセージなど
ユーザへの通知関連

Event
ネットワーク、スリーブなどの状態取得
戻るボタンなどのイベント取得

http://www.winlearning.jp/course/phonegap/phonegap.php
も参考にするとわかりやすい

phone gapについて

phone gapについて

Phone gapの情報を探すときには
PhoneGap
Apache callback
Apache Cordova
などのキーワードで検索

PhoneGapの特徴としては
HTML5+Javascriptでネイティブアプリが作れること

App Store Google Play App hubに登録てきるアプリを作れる

あと、ある程度ならデバイス操作も可能
加速度センサー
コンパス
カメラ
電話帳なども使える

デバイス操作関連のAPIは
PhoneGapAPIというJavascriptAPIが使えるので
これを使えば、各プラットフォームで動作するアプリを作れる

PhoneGapは、jQueryMobileと
相互補完関係にあるので
jQueryMobileでUIを作成して
処理は PhoneGapで行うようになる

PhoneGapは、ver1.41以前と
ver1.5以降ではパッケージ名やクラス名が変わっているので注意

markdown で段落改行水平線

markdown で段落改行水平線

p
br
で表現されるパラグラフとか改行について

パラグラフは簡単で
適当な文章を空行をいれて表現すればパラグラフになる

これをReText でみるには
編集 > HTML コードを表示
とすれば
別のウインドウでHTMLコードが表示される

retext2

これなら、わざわざブラウザ立ち上げして
developer tools で確認しなくてもいい

そして続き
改行をいれないとひとまとめて p 要素扱いになる

変更した場合には再度おなじ手順で表示しないと
ダメで
HTMLコード確認まではリアルタイムでないのは
残念

なお markdown で改行を入れるには
文章の後ろにスペースを2つ以上入れること

次に hr を markdown でかく方法
これは
– * _ のどれかを3つ以上書けばいい

連続じゃなくて
• – – と離して書いても適用される

ubuntu で  markdown

ubuntu で  markdown

ドットインストールの環境がMac で
私の環境が Ubuntu

ということで
まずは
http://ubuntuapps.blog67.fc2.com/blog-entry-247.html
を参考に
ReText をインストール

ReText の場合
リアルタイムで表示できる Live peview 機能があるので
これを使うため
メニューから
編集 > ライブプレビュー
で画面が分割されリアルタイム表示できるようになる

まずは実験で
#02 見出しを書いてみよう

を実践

試しに 左側の画面に
#Title1
とすると
右側の画面で
h1 要素で Title1 と表示される

retext

##title2
だと
h2 で title2 になる

h3 から h6 までは # の数をその分増やすことで対処できる

h1 は別の書き方があり
title
=====
というように文字の下へ = を1つ以上書けば
それで h1 とみなす

h2 も別の書き方があり
title
—–
というように今度は – を1つ以上書けば
それが h2 とみなす

とりあえず h1から h3 まで試したけど
問題なくリアルタイムで変更をみることができたので
これを使って
MarkDown を実践する

コードの記述には emmet-vim のほうが使い慣れているので
まだこっちを使う予定

jekyll のページの一部を部品化

jekyll のページの一部を部品化

wp 見たいにページの一部を部品化することができる

例えばレイアウトの中にフッターメニューを入れる

これにはHome へのリンク
About へのリンクを
default.html

{{content}}
の下に追加する

<hr><p><a href="/">Home</a> | <a href="/about.html"></a></p>

とする

ちなみに hr タグは横に罫線を引くタグ
http://www.htmq.com/html/hr.shtml
の解説を参考に

これでリンクと罫線がでる

このフッターメニューを default.html 以外のレイアウトで使うのなら
フッターメニューを部品化しておく

これで共通化して管理できる

これをやるには
部品を入れる特殊フォルダを作成する
名前は
_includes

そしてこの中に部品ファイルを作成する

今回はフッターメニューなので
footer_menu.html
とした

default.html のほうから

<hr><p><a href="/">Home</a> | <a href="/about.html"></a></p>

を切り取り
ここへ貼り付ける

そして
子の部品を呼び出すには
{% %}で囲む
これは ruby の記法なので覚えておく

つまり作成したファイルを呼び出すのなら

<% _include footer_menu.html %}

となる

書くときのファイルパスに注意すること