2013年12月31日火曜日

ImageViewの配置方法の例

ImageViewを好きな大きさで、好きな位置に配置する方法の例

<FrameLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"


<ImageView
android:layout_gravity="center"
android:layout_width="100dp"
android:layout_height="100dp"

・表示場所:layout_gravity="center"で真ん中に表示する。
・大きさ:layout_width、layout_heightで大きさを指定する。

    <ImageView
        android:layout_gravity="center"
        android:layout_width="150dp"
        android:layout_height="150dp"
        android:paddingRight="50dp"

※左へ50dpずらして100dpの大きさで表示する
・表示場所:layout_gravity="center"で真ん中に表示する。
・ずらす:paddingRight="50dp"で右側へ50dpの余白のpaddingを作る。
・大きさ:layout_width、layout_heightで大きさを指定するが、100dpではなく、ずらした50dpの分を足して150dpの値を入れる。


そうやればいいだけですが、ダイレクトに指定したいところですねえ。

2013年12月30日月曜日

android.support.v7.widget.GridLayoutの使い方。

「GridLayout」は対応していない機種があるので「android.support.v7.widget.GridLayout」の使い方です。

○sdkの中のsupportライブラリをeclipseのプロジェクトに取り込む
・file->import
・「Exsiting Android Code Into Workspace」
・「Root Directory」にandroid-sdksの「extras\android\support\v7\gridlayout」パス入力
 どちらでもいいが「Copy projects into workspace」にチェックを入れる。

○ライブラリの
開発するプロジェクトでの作業
・プロジェクトのプロパティ表示
・左ペイン「Android」
 右ペイン「Library」の「Add」
 「android-support-v7-gridlayout」入力


○グラフィカルレイアウトでの使用
paletteのlayoutsの中のGridLayoutを使えば、互換用のライブラリの方のGridLayoutを使ってくれるようになる。

記述するなら下記
    <android.support.v7.widget.GridLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res/jp.blogspot.stella_house_software.v7gridlayout"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:columnCount="2"
        app:rowCount="3" >
    </android.support.v7.widget.GridLayout>


○中のアイテム
propetiesのLayout ParametersのRowとColumnで場所を指定する。
記述するなら下記
        
<Button
            android:id="@+id/button1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            app:layout_column="0"
            app:layout_row="0"
            android:text="Button" />


○注意
・グラフィカルレイアウトでエラーが出る場合はeclipseを起動し直せばよい。
記述間違いなどではないので要注意

・propertyはandroid.support.v7.widget.GridLayoutのプロジェクトのattrs.xmlに記載がある。
GridLayoutがフレームのプロパティ
rowCount,columnCountなどがある

GridLayout_Layoutが中のアイテムのプロパティ
layout_row,layout_columnなどがある。

2013年12月29日日曜日

apacheのアクセス拒否方法

apacheで特定のサイトからのアクセスを拒否する方法。

http.conf
>    Order allow,deny
>    Allow from all
>    Deny from .xxxxx.ne.jp
>    Deny from 192.168.

IPひとつだけや特定のURIのみ拒否したい事は少なく
複数サイト、複数セグメントからのアクセスを拒否したい、ブロックしたい事が多いだろう。

>    Deny from .xxxxx.ne.jp
上の例のように、最初の文字をピリオドに刷る。
yyy.xxxxx.ne.jp
zzz.xxxxx.ne.jp
などを拒否できる。

>    Deny from 192.168.
192.168.x.xを拒否できる。

c:\apache\conf\http.confなどのディレクトリにあるだろう。

2013年11月17日日曜日

androidのファイルをバックアップ

アプリのデータはバックアップできるかどうかはアプリ次第。それぞれ。
よって、基本難しいのですが、
とにかくファイルをコピーしておけば、あとでどうにかなるだろうというやり方です。

「/mnt/sdcard」の中身をすべてコピーすればいい。
ただし、「/mnt/sdcard/external_sd」は、microSDカードの中なので、
microSDをPCにつないでコピーするのがいいだろう。


「/mnt/sdacrd」と「/sdcard」の中身は同じ。シンボリックリンクだろう。

「/mnt/sdcard」と「/storage/sdcard0」も中身は同じ。シンボリックリンク。
「/mnt/sdcard/external_sd」と「/storage/sdcard1」も中身は同じ。シンボリックリンク。

「/internal_sd」もあるが空なので用途不明

「/mnt/usbmemory」「/storage/usbmemory」はUSBケーブルでメモリースティックなどを使うと見えるのだろうか(未確認)

es file exprolerを使う。

todo:microSDを外した状態で「/mnt/sdcard/external_sd」の中を見るとファイルがある(?)

こないだ、使っているスマートフォンが初期不良で新品に交換してもらったのですが
中のデータをどういどうすればいいの?で、アプリごとにバックアップの仕組みを探して、バックアップしてリストアする。って事で、あきらめなくちゃ行けないのはどれかも確認して。
もう少し便利になって欲しいものです。

2013年11月15日金曜日

hyper-vで仮想マシンに接続できなくなった場合の対処

サーバーマネージャーから、hyper-vで、仮想マシンのアイコンダブルクリックしてもら
仮想マシンに接続できなくなった場合の対処方法

○状況:下記のメッセージが出て接続できない

>仮想マシン接続
>視覚情報がリモートコンピュータに送信されない可能性があるため接続は確立されません。
>詳細については、システム管理者に問い合わせてください。
>接続を再試行しますか。
>「接続」「終了」

「接続」をクリックしても接続できない。

○対処
サーバーマネージャーから、左ペインの「hyper-vマネージャー」の接続したサーバーのアイコンを選択して
右ペインの「Hyper-Vの設定」をクリック

「Hyper-Vの設定」ウィンドウ
左ペイン「ユーザー資格情報」を選択

右ペイン「規定の視覚情報を自動的に使用する(プロンプトを表示しない)」にチェックを入れる。


すでにチェックが入っている場合は、一度チェックをはずして「OK」してから
もう一度ウィンドウを開いてチェックを入れて「OK」をクリックして入れなおす。



(未解決)
やったら直ったというだけで「資格情報」の機能を確認する必要がある。hyper-vで仮想マシンに接続できなくなった場合


サーバーマネージャーから、hyper-vで、仮想マシンのアイコンダブルクリックしてもら
仮想マシンに接続できなくなった場合の対処方法

○状況:下記のメッセージが出て接続できない

>仮想マシン接続
>視覚情報がリモートコンピュータに送信されない可能性があるため接続は確立されません。
>詳細については、システム管理者に問い合わせてください。
>接続を再試行しますか。
>「接続」「終了」

「接続」をクリックしても接続できない。

○対処
サーバーマネージャーから、左ペインの「hyper-vマネージャー」の接続したサーバーのアイコンを選択して
右ペインの「Hyper-Vの設定」をクリック

「Hyper-Vの設定」ウィンドウ
左ペイン「ユーザー資格情報」を選択

右ペイン「規定の視覚情報を自動的に使用する(プロンプトを表示しない)」にチェックを入れる。


すでにチェックが入っている場合は、一度チェックをはずして「OK」してから
もう一度ウィンドウを開いてチェックを入れて「OK」をクリックして入れなおす。



(未解決)
やったら直ったというだけで「資格情報」の機能を確認する必要がある。

2013年11月14日木曜日

BUFFALO LinkStation LS-WH1.0GL/R1のハードディスク交換方法

バッファローのLinkStation LS-WH1.0GL/R1でRAID1厚生にしていたHDDの片方が壊れたときの交換方法


○RAID1構成なので、どっちのハードディスクが壊れたかを確認する方法

NASなのでブラウザからログインする
デフォルトのログインID,パスワードはadmin / password

警告が出ている。
警告メッセージをクリックする。

>構成ディスク
>■ ディスク1 RAIDアレイ1 ST3500620AS 465.8GB
>□ ディスク2 RAIDアレイ1 ST3500620AS 465.8GB
>「RAIDアレイの再構成」「RAIDアレイの削除」「キャンセル」

上記の画面、わかりにくいが
「RAIDアレイの再構成」は無効になっていて押せない
「RAIDアレイの削除」は押せる

ディスク1の■は、チェックが入っている状態で無効になっているのでクリックできない。
つまりチェックが入っている。(ということか)

ディスク2の□は、チェックが入っていない。クリックするとチェックできる
チェックすると「RAIDアレイの再構成」が押せるようになる。

これは何を意味しているかがわかりにくかった。

「RAIDアレイの削除」は押すとRAID1が削除されて、データも削除されるらしい。

ディスク1のチェックが入っているままで、チェックがはずせない行は、正常なHDD。ということらしい。

ディスク2のチェックが入っていなく、チェックを入れることができるのが故障したHDD。ということらしい。

よって、今回はディスク2を交換する必要がある。


○壊れたハードディスクをはずす方法

ドライバーが必要。
本体底面の前足2箇所にあるボルトをそれぞれはずす。
前パネルが外れるようになるので、はずすと
HDDが縦に2本入っている。
左から「1」「2」とシールが上に張ってある。

web画面から確認した番号が「2」なので、
今回は右側の「2」のハードディスクを抜く。


○とりあえず起動

交換ハードディスクを事前に持っていないので、そのまま電源を入れる。
HDD1本で動きました。

ブラウザで見るとディスクが「未接続」になっています。

>■ ディスク1 RAIDアレイ1 ST3500620AS 465.8GB
>□ ディスク2 未接続
今度はディスク2のチェックは、外れた状態で、クリックができない。
HDDが接続していないからチェックできないという意味だろう。わかりにくい。


○交換
電源を落として、ディスク2に新しいディスクを入れて電源ON
正常な500GBのHDDに対して、新しい1GBのディスクを入れた。


ブラウザで見ると以下のメッセージ
>RAIDアレイ1にエラーが発生しました

>現在RAIDアレイ情報を更新しています
>更新中はLinkStationの設定を変更することはできません
>またファイル共有サービスも停止しています

ファイル共有にアクセスすると、アクセスできます。
メッセージと違いますが不明

リビルドをするのかと思いましたが、「RAIDアレイの再構成」のボタンの画面が出てこない。

メニューのほかの項目は一切クリックも出来ない。

何がおきているのか非常に不安。
しかしここで変な作業を行ってもまずいためひたすら待つ。
そのひたすらが、何時間なのか丸一日以上必要なのかも不明なのが不安。

1GBのフォーマット中ということか?

まさか、中身を消してないだろうなという不安。

○「EMエラー」の表示。
メーカーのwebサイトを見るとファームウェア更新が必要との事。

ファームウェア更新をすると、管理情報が消えました。困ります~。
IPが変な値に変わってる。ログインIDが消えている。データは消えていないっぽい(ふあん)
pingが通ったり、しばらくするときれたり、通ったり。
I255エラーとの事。ディスク1の方も壊れているのか。

こまりました^^;
続く。



わかりにくいなあ。
本体のLEDの情報が不足していて不親切
ブラウザの画面の情報がわかりにくく不親切
マニュアルも不親切。
webの情報も不親切。

マニュアルやwebサイトのサポート情報のどこを探しても
私の書いた事を見つけることができなかった。

ついでに
交換HDDを同じ要領でもメーカーが違うと若干の要領違いでリビルドができないと困るなと思い
メーカー指定のHDDを買おうとバッファローのサイトを確認すると
交換用HDDの商品の指定はあるが、クリックすると生産終了。

なんだろう。

この、作るからには、
使ってもらって、喜んでほしい。と思いながら作るのだろうと
期待してしまう、私が、期待のしすぎ。ですね。

このメーカーのNASはもう買いたくないなという印象です。

2013年11月13日水曜日

Windows Server 2003の起動時の0x0000007Bの問題対処

Windows Server 2003がインストールされたハードディスクを
別のPCに接続して、そのままOSを立ち上げたい。

ハードディスクをオンボードから、RAIDカード接続にした。

別のRAIDカードに交換した。


バックアップからリストアした先が別のPC


これらの場合OSが起動できずに0x0000007Bのブルースクリーンが表示される。

・対処方法
Window Server 2003 のインストールCDで起動して修復インストールをする。

OSインストール時に、インストール済みのOSを上書きするか、新規インストールするかと聞いてくるので
「R」を入力して上書きインストールにする。

(Rを押して回復コンソールのコマンドラインの入力画面ではない。その先)


・起動後に以下の対応が必要になる。

 Service Pack の再インストール

 .net frameworkの再インストール
 (一度案インストールしてから、インストールしなおす)


blue screen on deadが、BSoDって略語もできてるし。

別のパソコンへリストアできても、起動できないと
故障時にどうにもならない問題は
windows7でも同じで、
OSとして対応してほしいものです。

2013年11月12日火曜日

Windows Server 2003 R2 インストーラーで0x0000007Bの問題対処

Windows Server 2003 R2 をインストールしようと
インストーラーCDで起動したが、最初の画面まで行かずに
ブルースクリーン0x0000007Bでとまってしまう。

明確な原因不明のまま解決。

・メーカーのサイトに掲載されていた最新のbiosに更新したが解決せず

・内蔵DVDドライブもオンボードRAID経由の接続なのでこれが原因の可能性を思い、
 USB CD起動を試したがUSB CD起動はできない機種のようだ。
 起動順番画面にUSB CDは出てくるが、ダミーのようだ(未確認)

・RAID1なのでHDD2本のSATAケーブルを抜いて起動。
 ブルースクリーンの出てしまうタイミングでブルースクリーンは出なくなった。
 そのあとSATAケーブルを接続してもHDD認識せず。解決せず。

・ケーブルを2本とも抜いて再起動したところRAID1が消えている。
 ctrl+mでRAIDのbios画面(?)に入って、RAID1を同じように組みなおす。
 データが消えてしまうようにも思ったが、消えてない(らしい)

 つぎに、SATAケーブルは普通に接続しまたま
 内蔵DVDにwin2003のインストールディスクを入れる。
 本体前面上側のUSBポートにUSB FDDを接続してRAIDのF6ドライバ用のフロッピーを入れておく

 windows2003のインストーラー起動
 F6押す

 →解決した。ブルースクリーンがでなくなった。
 Sキーでフロッピーからドライバ読み込み
 windowsインストール
 Rで上書きインストール(復旧インストール?)




ーーー
オンボードのRAID経由でDVDドライブが接続されているのでそれが怪しいと
思いつつ、USBのCDドライブで起動しようとしたが起動せず。

biosを見るとUSB CDの起動順番の表示もあるのでCDブートに対応していると思うが
起動しない。→これは結局不明。表示されてるけど対応してませんってことかな。

最終的にうまく出来た流れの中で、何が理由だったかと考えると、
USB FDDをさしたままにしたから?ポートによって?RAID1を作り直したから?
RAID1作り直してから一度もHDDのOSを起動させようとしなかったから?
実はDVDドライブが不安定?

いろいろ悩んで結構時間かかりましたが、
原因不明。でも出来た状態。だめなパターンですねえ。
うーん。いろいろ。ありますねえ(^_^;

2013年11月11日月曜日

消せないファイルを消せるように権限設定をする

>ファイルアクセスの拒否
>この操作を実行するアクセス許可が必要です。
>このファイルを変更するには ~ からアクセス許可を取る必要があります。
>「再試行」「キャンセル」

「セキュリティ」タブ
「詳細設定」ボタンクリック

「所有者」タブ
「編集」

自身のID(adminsitratorなど)選択して
「サブコンテナーとオブジェクトの所有者を置き換える」チェックを入れる
「OK」



「アクセス許可」タブ
「アクセス許可の変更」ボタンクリック
「追加」クリック
自身のログインID(administratorなど)入力

「~ のアクセス許可エントリ」で、「許可」の四角に全部チェックを入れて
「OK」

「子オブジェクトのアクセス許可すべてを、このオブジェクトからの継承可能なアクセス許可で置き換える」チェックを入れて「OK」

その後robocopyが便利。

それでも以下のメッセージが出る場合があったtodo
>セキュリティの適用エラー
>セキュリティ情報を適用中にエラーが発生しました
>(ファイル名)
>アクセスが拒否されました
>「継続」「キャンセル」

2013年11月2日土曜日

eclipseでソースコードの文字コードの設定

eclipseでソースコードの文字コードを設定する方法。

メニューより「Windows」→「Preference」

「Preference」ウィンドウの左ペイン
 「General」→「Workspace」

 右ペイン「Text file encoding」が初期値は「Default(MS932)」だが
 「Other」を選択して、「UTF-8」などに変更する。


webからダウンロードしたソースコード、書籍に付属されたサンプルコードなど
他の方がコーディングしたソースコードの文字コードが違う場合にあわせられます。

デフォルトをMS932ではなく、UTF-8にしておいてもらっていいと思うのですが、
文字コード難しいですね。プログラマのための文字コード技術入門(WEB+DB PRESS plus)いい本ですね。

2013年10月20日日曜日

eclipse でlayoutが表示されなくなる問題

突然、いつのまにか、 eclipse でlayoutが表示されなくなり、以下のメッセージが出る問題が発生しました。

activity_main.xml
>Missing styles. Is the correct theme chosen for this layout?
>Use the Theme combo box above the layout to choose a different layout, or fix the theme style references.

>Failed to find style 'spinnerStyle' in current theme
>Failed to find style 'textViewStyle' in current theme
>android.content.res.Resources$NotFoundException
>"?android:attr/listPreferredItemHeight" in attribute "minHeight" is not a valid format.
>Exception details are logged in Window > Show View > Error Log
>The following classes could not be found:
>- TextView (Change to android.widget.TextView, Fix Build Path, Edit XML)

(未解決)

spinnerStyle, textViewStyleを消しても解決しない。

結局、以下の手順で解決した。

・layoutのファイル、activity_main.xml の内容をコピーしておき
layoutのファイルを一度消す。

・念のため「Project」→「Clean」を実行しておく。

・「File」→「New」からlayoutのファイル、activity_main.xmlを新規作成する。
内容をペーストする。


根本の解決ではないが、ディレクトリの中身を比較しても違いがない。
でもこの手順で解決する。疑問。根本解決しない。

まずは、ファイルの作り直しで乗り切る事にする。

○追記
ただしい対処方法はeclipseの再起動でした。
なぜそれが必要になるのかは不明ですが

正しく記載されていれば再起動でなおります。

コードの記載の間違いの可能性を考えながらの場合は
なおしたらeclipse再起度して確認を繰り返せば解決する。

なぜなのかが残りますが、eclipseの対応が必要なのかな。期待します。

2013年10月19日土曜日

Activityのmenuを使う方法

Activityのmenuを使う方法です。

レイアウトはmenuで設定して、処理はActivityのメソッドをオーバーライドです。


○まず、menuのレイアウト例
 /res/menu/menu_samp.xml
 メニュー項目3つ。その1つめはサブメニュー付きにしてみた

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:id="@+id/item1" android:title="t1">
        <menu>
            <item android:id="@+id/item4" android:title="sub1"/>
            <item android:id="@+id/item5" android:title="sub2"/>
            <item android:id="@+id/item6" android:title="sub3"/>
        </menu>
    </item>
    <item android:id="@+id/item2" android:title="t2"></item>
    <item android:id="@+id/item3" android:title="t3"></item>
</menu>


○ソースコード
Activity のクラスの中に以下のメソッドを置く


    //メニューボタンが表示されたときのレイアウトを指定する
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater menuInflater = this.getMenuInflater();
        menuInflater.inflate(R.menu.menu_samp, menu);
        
        return true;
    }

    //ここで選択されたときの処理を入れる
    @Override
    public boolean onMenuItemSelected(int featureId, MenuItem item) {
        switch(item.getItemId()) {
        case R.id.item1 :
            return true;
        case R.id.item2 :
            return true;
        case R.id.item3 :
            return true;            
        case R.id.item4 : //sub1
            return true;
        case R.id.item5 : //sub2
            return true;
        case R.id.item6 : //sub3
            return true;
        }  
        return super.onMenuItemSelected(featureId, item);
    }



名前の付け方を工夫しないと数が多くなったときに困りそうですね。
細かいオプションはlayoutで指定できるのでらくそうです。

2013年9月29日日曜日

androidカスタムダイアログの作り方

androidでカスタムダイアログを作った例です。

○ソースコード




        LayoutInflater inflater = (LayoutInflater) this.getSystemService(LAYOUT_INFLATER_SERVICE);
        final View viewSettingDialog = inflater.inflate(R.layout.setting_dialog, (ViewGroup)findViewById(R.id.layout_root));
        ((CheckBox)viewSettingDialog.findViewById(R.id.checkBoxVibrator)).setChecked(true);
        ((SeekBar)viewSettingDialog.findViewById(R.id.seekBarVolume)).setProgress(50);
        
        //
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setView(viewSettingDialog);
        builder.setPositiveButton("OK", new OnClickListener() {
            public void onClick(DialogInterface dialog, int which) { // OKボタンクリック処理
                boolean valVib = ((CheckBox)viewSettingDialog.findViewById(R.id.checkBoxVibrator)).isChecked();
                int valVol = ((SeekBar)viewSettingDialog.findViewById(R.id.seekBarVolume)).getProgress();
            }
        });
        builder.setNegativeButton("Cancel", new OnClickListener() {
            public void onClick(DialogInterface dialog, int which) {
                // Cancel ボタンクリック処理
            }
        });
        builder.create().show();



○setting_dialog.xml
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/layout_root"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:padding="10dp" >
        <TextView
            android:id="@+id/textView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/option_volume" />
        <SeekBar
            android:id="@+id/seekBarVolume"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:max="100"
            android:padding="16dp"
            android:progress="50" />
        <CheckBox
            android:id="@+id/checkBoxVibrator"
            android:layout_width="308dp"
            android:layout_height="wrap_content"
            android:text="@string/option_vibrator" />
    </LinearLayout>




画面はeclipseでデザインできるので便利です。
その際に「LinearLayout」にID「layout_root」を付けておき、
その「layout_root」を「R.id.layout_root」と
もう一つ、「R.layout.setting_dialog」でinflateでViewで読み込んで表示します。

eclipseでデザインできるのが便利ですねえ。



2013年9月22日日曜日

java文字列から指定した部分を取得する

java文字列から指定した部分を取得する例です。

String val;
val = "abcde":
val = val.substring(1, 3);

これで、「bc」が取り出せます。


substringの引数
 ゼロ始まりの数字
 1つ目が、開始位置
 2つ目が、終了位置の -1



-1が直感的ではないように思いますが、このような仕様でした。

C#のSubstringやVisual Basic ApplicationのMid$の様なものですね。

2013年9月21日土曜日

Androidで強制終了されにくいサービスを作る

Androidでサービスを作ると、OSによって強制終了されてしまうがなるべく強制終了されにくいサービスを作る方法


○AndroidManifest.xmlへ記述

    <application ~

        <service android:name="jp.blogspot.stella_house_software.sampleservice.MainService" />


○Activityからサービスのインテントを起動する

Intent intent = new Intent();
intent.setClass(getApplicationContext(), MainService.class);
startService(intent);


○サービス本体

package jp.blogspot.stella_house_software.sampleservice;

import android.support.v4.app.NotificationCompat;

public class MainService extends Service  {



@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Log.i("tag_debug", "[onStartCommand]");

//Notification notification = new Notification.Builder(this)
Notification notification = new NotificationCompat.Builder(this)
.setContentTitle("content title")
.setContentText("content text")
.setSmallIcon(R.drawable.ic_launcher)
.build();

NotificationManager manager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
manager.notify(1, notification);

startForeground(1,notification);

return START_STICKY;
}
}

ポイントは、
・startForeground(1,notification);を入れる。
・サービスの onStartCommand を START_STICKY で returnする。


2013年9月20日金曜日

androidウィジットの値の取得方法、値の設定方法

androidで、画面の部品、ウィジットから値を取得する方法と、値を設定する方法です。

取得
String val = (String)(((TextView)findViewById(R.id.text_mm)).getText());

設定
((TextView)findViewById(R.id.text_mm)).setText( val);


取得はgetText,設定はsetText、例ではTextViewですが、Buttonなども同じ。
よく使うので1行で書いてしまっています。


2013年9月8日日曜日

Windows自動認識しないハードウェアの追加方法

「hdwwiz.exe」を実行すると「ハードウェアの追加」ウィンドウが表示される。

「一覧から選択したハードウェアをインストールする(詳細)」を選択して「次へ」クリック

「すべてのデバイスを表示」を選択して「次へ」クリック
 ここで適当なハードウェアの種類を選んだ場合は次の画面でリストの中が表示されなくなる
 「ディスク使用」からインストールするならあえて適当なのを選んだ方が早いかtodo

ここで左ペイン「製造元」に「Microsoft」を選んで
右ペイン「モデル」に「Microsoft Loopback Adapter」を選べば
ネットワークの無い環境でIPが設定できる。
(Windows8では「Microsoft KM-TEST Loopback Adapter」とう名前に変わっているらしいtodo)

2013年9月7日土曜日

hyper-vにredhatlinuxをゲストOSとして動かした際のネットワーク設定

ネットワークの有効化

hyper-vの設定から「ネットワークアダプタ」は削除する。
hyper-vの設定から「レガシネットワークアダプタ」を追加する。
 ネットワークは「ローカルエリア接続-仮想ネットワーク」を選択する。


「ネットワークアダプタ」では認識しなかったtodo
「レガシーネットワークアダプタ」では遅くなるはずなのでこれでは解決にならないtodo

guestにwindowsをインストールすると「レガシーネットワークアダプタ」は
「Intel 21140-Based PCI Fast Ethernet Adapter(Generic)」と表示される。
「ネットワークアダプタ」の場合は「Microsoft Virtual Machine Bus Network Adapter」になる。

2013年9月6日金曜日

pstファイルのコピーによるアウトルックのデータ移行方法

パソコンを入れ替えた際のアウトルックのデータ移行方法

outlook 2010
 画面左上のメニュー「ファイル」→左ペイン「情報」→右ペイン「アカウント設定」

アカウント設定のウィンドウが表示される。
「データファイル」タブ

デフォルトで「Outlookデータファイル」場所「C:\Users\Administrator\Documents\Outlook ファイル\Outlook.pst」

タブの中の上の方にある「追加」クリック


・デフォルトであるファイルは、そのデータが必要ないのであれば、
 タブの中の上の方にある「削除」で消してしまっていい。
 ただし、「既定に設定」を別のファイルに移動させてから、outlookを一度再起動させた後に削除できる。



.pstファイルの保存先はアウトルックのバージョンとOSのバージョンによって違う
 (Windows XP todo)
  C:\Documents and Settings\<username>\Local Settings\Application Data\Microsoft\Outlook

 (Windows 7 + Outlook 2010)
  C:\Users\Administrator\Documents\Outlook ファイル

ディレクトリ名、保存場所など若干未確認情報ありです。

2013年9月5日木曜日

hyper-vの保存先の変更

左ペインの「Hyper-V マネージャー」のコンピュータ名を選択

中側の「操作」ペインの移動する仮想マシンを選択する。
右側の「エクスポート」をクリック
移動したい先のディレクトリを指定して実行する。

エクスポートが完了したら、元の仮想マシンは削除すること。
インポート前に削除しないとインポートできない。
破棄にもじかんがかかり「状況」で「破棄中」のパーセント表示が確認できる。
 破棄したにもかかわらず元のディレクトリにはファイルが残っている
 さらにエクスプローラーから消そうととしても消えない
 一度サーバーPCを再起動すれば削除できた

・右側の「仮想マシンをインポート」をクリック
 「仮想マシンが含まれているフォルダーの場所を指定してください」で
 エクスポートしたディレクトリを指定する。
 エクスポートしたフォルダは「Snapshots」「Virtual Hard Disks」「Virtual Machines」がある。
 >設定
 >仮想マシンを移動または復元する(既存の一意なIDを使用する)
 >仮想マシンをコピーする(新しい一意なIDを作成する)
 >
 >すべてのファイルを複製し、同じ仮想マシンを再度インポートできるようにする
 > ファイルをコピーしないと、元に別の場所にファイルをバックアップしていない限り、
 > 同じ仮想マシンを再度インポートする事は出来ません。

「仮想マシンを移動または復元する(既存の一意なIDを使用する)」を選択して
  「すべてのファイルを複製し、同じ仮想マシンを再度インポートできるようにする」はチェックオフのまま
  「インポート」ボタンをクリックする。

・インポートが完了すると警告が出る
 >仮想マシンのインポートは成功しましたが、次の警告が返されました。
 >インポートは完了しましたが、警告があります。
 >インポートは完了しましたが、警告があります。詳細については、
 >Hyper-V-VMMSイベントログでAdminイベントをチェックしてください。


ファイルをコピーするだけではだめらしいtodo
複製とコピーって校正もれ

ハードディスクのvhdごとコピーされるが、Dドライブの別vhdも一緒にコピーしてくれるのか確認必要todo

2013年9月4日水曜日

Windowsで消せないファイルを消す

>ファイルアクセスの拒否
>このファイルを操作するには ~ からアクセス許可を得る必要があります。

robocopy c:\dummy c:\cantdeletedir /purge /w:0 > nul

 c:\cantdeletedirという消したいフォルダの例
 c:\dummyというダミーの空ディレクトリを作っておいてから
 コピー元としてc:\dummyを指定して、
 コピー先として本当に消したいディレクトリc:\cantdeletedirを指定して
 /purgeというコピー元に存在しないファイルは、
  コピー先のファイルから消すオプションを付けて実行する。
 /w:0で再試行時に30秒待つ標準の設定を0秒と即時にするオプション
 > nul 表示が多くて遅い場合は表示させない

2013年9月2日月曜日

HYPER-V で RedHat Linux を動かす

(マイクロソフトのサイト id=28188)
Linux Integration Services Version v3.2 for Hyper-V - 日本語
バージョン:3.2
公開日:2011/12/01
Linux IC v3.2.iso 2.2 MB
Linux Integration Services v3.2 Read Me.pdf 280 KB

1) isoをマウントする
2) mount /dev/cdrom /media
3) cd /media
4) ./install.sh
5) reboot

インストールしないとXが動かないが
インストールすればXも正常に起動しました。
最初のkudzuの青い画面でコンフィグを動かします。

host OS : Windows2008R2Server
guest OS : rhel5 x64 で動作確認しました。

ゲストOSもx64が動くなんていいですね。

2013年9月1日日曜日

hyper-vで Virtual PC 2007の共有ネットワーク(NAT)と同じ設定をする

左ペインの「Hyper-V マネージャー」のコンピュータ名を選択
 ↓
右側の「操作」ペインに「仮想ネットワークマネージャー」をクリック

「仮想ネットワークマネージャー」ウィンドウが表示される

・左ペインにデフォルトでは「ローカルエリア接続 - 仮想ネットワーク」がある。
 「接続の種類」
   「外部」選択されている
   その下のコンボボックスに物理NICが選択されている
   「管理オペレーティングシステムにこのネットワークアダプタの共有を許可する」にチェックが入っている。

・hyper-vで Virtual PC 2007の共有ネットワーク(NAT)と同じように
 ホストOSとその下で動いているゲストOSのみで通信をするためには以下の設定をする。

左ペイン「新しい仮想ネットワーク」をクリック
右ペイン「内部」を選択して「追加」ボタンクリック

登録すると、左ペインに1つ追加されている
ホストOSの「ネットワーク接続」を見るとアダプタが一つ増えている。
「仮想ネットワークマネージャー」ウィンドウで設定した「名前」が
そのまま「ネットワーク接続」画面のアダプタ名になっている。

・ホストOSの「ネットワークマネージャー」から、
 今回作成したアダプタ名のプロパティを出してIPアドレスを設定する。


・ゲストOSの「設定」から左ペイン「ネットワークアダプタ」を選択して
 右ペイン「ネットワーク」のコンボボックスで、今回作成したアダプタ名を出す。

 ゲストOSを起動してゲストOSの中のネットワーク設定のIPv4を設定する。

2013年8月31日土曜日

hyper-v + linuxのキーボード設定

「システム」→「設定」→「キーボード」

「レイアウト」タブ
デフォルトでは以下になっていた
 「キーボードの形式」「Generic 105-key(Intel)PC」
 「レイアウト」「U.S.English」
 画面から操作するとなぜかクラッシュする

vi /etc/X11/xorg.conf

「Section "InputDevice"」の以下をそれぞれjp106, jpにする
 >Option      "XkbModel" "jp106"
 >Option      "XkbLayout" "jp"
 PC再起動

 キーボード設定が異なるとのメッセージが出るので「Xの設定を使う」ボタンをクリックする

2013年8月30日金曜日

システム イメージの作成:バックアップに失敗しましたエラー0x80780119

>バックアップに失敗しました。
>ディスク領域が不足しているため、保存場所にボリュームのシャドウコピーを作成できません。
>バックアップするすべてのボリュームについて、シャドウコピーの作成に必要な
>最小限のディス領域が利用可能であることを確認してください。
>これは、バックアップの保存先と、バックアップに含まれるボリュームの両方について行う必要があります。
>最小用件:500MB未満のボリュームに対して50MBの空き領域、
>500MBを超えるボリュームに対して320MBの空き領域が必要です。
>推奨事項:ボリュームのサイズが1GBを超える場合、各ボリュームについて、
>少なくとも1GBの空きディスク領域が必要です。(0x80780119)

・サービス「Microsoft Software Shadow Copy Provider」が「手動」になっている事

・「コントロールパネル」→「システムとセキュリティ」→「システム」→左ペイン「システムの詳細設定」
 →「システムの保護」タブ

 バックアップ元のドライブ、バックアップ先のドライブ
  それぞれ全て「保護」が「有効」になっている事
  それぞれ全て「構成」ボタンをクリック
   「システム設定とファイルの以前のバージョンを復元する」にチェックが入っている事。
   「最大使用量」が「100%」になっている事


○bcd領域の問題
・「コンピュータの管理」→「ディスクの管理」
 Cドライブの左側にある「システムで予約済み」の領域の確認が必要。
 確認方法は、Zドライブなどに割り当てて、エクスプローラーから空き領域を確認する。
 手元のPCでは「容量 99.9MB」「空き領域 30.7MB」とある。
 この空き領域が少ないのが問題らしいが、空き領域を広げる事が出来ないので、
 このパーティションは捨てて、別のパーティションを作る手順になる

・Cドライブが含まれたディスクに空きを作る
 Cドライブを右クリックして「ボリュームの縮小」を選び、
 適当に1GB程度でいいので空きを作る。

 作った空き領域をZドライブなどに割り当てる。

 コマンドラインより以下を実行する
 bcdboot.exe c:\windows /s z:
 diskpart
  select volume z
  active

 これで、「ディスクの管理」から見て
 元あからある「システムで予約済み」領域の「パーティションをアクティブとしてマーク」の文字は選択できる状態
 Zドライブを右クリックすると「パーティションをアクティブとしてマーク」の文字が白抜きで選択できない状態
 になっている。
 Zドライブをエクスプローラーで見ると、「$RECYCLE.BIN」「Boot」「System Volume Information」「bootmgr」の
 ファイルとフォルダがある事を確認できる。
 Zドライブの割り当ては消してしまっていい。

 最終確認として再起動できる事を確認する。


 ※bcdboot.exeで「bcdboot.exe c:\windows /s c:」と、システムドライブと一緒でもいいだろうtodo
 ※diskpartでは無く「ディスクの管理」から「パーティションをアクティブとしてマーク」してもいいだろうtodo

○バックアップ
 「コントロールパネル」→「バックアップと復元」→左ペイン「システムイメージの作成」

 「ハードディスク上」からバックアップ先のUSBディスク等を選択して「次へ」

 この対応をした際のポイントとして、作業前は
 「システムで予約済み」の領域にバックアップのチェックが入っていたが、
 今ははいていない状態になっている。
 その代わりにZドライブとして作業した領域が「(システム)」としてチェックが入っていて外れない状態になっている。
 「(システム)」と「(C:)(システム)」の2つがチェックが入っていて外れない状態になっているのを確認して
 「次へ」をクリックする。
 もし、その際、元の「(システム)」にチェックが入っていて3つチェックが入っていて外れない状態であれば
 bcdの作業がうまく出来ていない可能性がある。



理屈がわかればその通りやればいいだけですが、
なんだかもう少し便利になって欲しいもののですね。
bcd領域を変更するのもちょっと怖いですし。

2013年8月29日木曜日

システム イメージからの復元方法

事前に「システム修復ディスク」のCD-ROMを作成しておき、
「システム修復ディスク」から起動する。

・「システム回復オプション」ウィンドウ
 「以前に作成したシステムイメージを使用して、コンピュータを復元します。」選択
 「次へ」クリック

・「システムイメージバックアップの選択」
 USBディスクなどで接続されていれば、バックアップ日時が表示されて確認できる。
 復元したいイメージを選択して確認したら「次へ」クリック

・「他の復元方法を選択してください」
 ディスクは全クリアのチェックを入れて、
 そのまま「次へ」クリックでよいが以下のオプションが選べる
 除外ディスク(復元先のディスクの内容は削除されるので確認)
 「ドライバーのインストール」RAIDコントローラーの場合など
 「詳細設定」自動再起動のオプションと、ディスクチェックのオプション


一度目の復元でエラー、2度目の復元でディスクは全クリアをいれれば復元できる。理由は?todo
ディスクコントローラーが違うと起動しないtodo
調べますtodo

2013年8月24日土曜日

VHDブートのトラブルシューティング

・ブルーバック0x00000136が表示される場合

 VHDのディスク容量(可変長の場合は実際のサイズより大きいはず)が
 ホストのドライブの容量より大きい場合は stop 0x00000136で起動できない。
 可変長のVHDファイルを使っているときに要注意。


・ブルーバック0x0000007Bが表示される場合
 IDE, AHCI, RAIDの問題だと思われるが要調査。
 BIOSで変更できるなら変更して起動する。

 マイクロソフトkb922976「MicrosoftFixit50470.msi」が有効か要確認

 マイクロソフトkb314082のレジストリ更新が有効か要確認

 なお、起動しない場合は別のPCにつないでregedit.exeで変更も可能
 ・regedit.exe起動
 ・左ペインHKEY_LOCAL_MACHINE選択
 ・「ファイル」→「パイプの読み込み」
 ・レジストリのファイルを指定する
  たとえばF:\ドライブなら「F:\Windows\system32\config\SYSTEM」
 ・名前はVHDなど適当に付ける。
 ・左ペイン「HKEY_LOCALE_MACHINE\VHD~」で読み込める。

2013年8月23日金曜日

VHDファイルの縮小

VHDファイルには「ディスク容量」とその中の「パーティションサイズ」がある。

・まずパーティションサイズを縮小する

 Windows7の「ディスクの管理」画面から「VHDの接続」で接続する。
 パーティーションを右クリックして「ボリュームの縮小」を選択する。

 いらないパーティションはすべてボリュームの削除をする。

 ※Windows7のディスクの管理で縮小できない場合は他のツールを使う必要がある。
  EASEUS Partition Master辺りがフリーで使えるだろうか。要確認。


・ディスク容量の圧縮はフリーで使用できる「VhdResize」を使う。
 現在ver1.0.42が最新の様だ。

 ※srcとdestが別のファイルになるので、作業前にバックアップは必要ない。
  固定長と可変長が選べる。
  縮小可能な最小サイズはsrcを選択した時点で表示される。

2013年8月22日木曜日

Windows7でタブレットペンの動作をスムーズにする

・プレスアンドホールドを無効にする

 コントロールパネル→「タブレットペン設定の変更」→「ペンのオプション」タブ
 「プレスアンドホールド」選択して「設定」ボタンクリック

 「プレスアンドホールドを右クリックとして認識する」のチェックを外す


・フリックを無効にする

 コントロールパネル→「タブレットペン設定の変更」→「フリック」タブ
 「フリックを使用してよく実行する操作を素早く簡単に行う」チェックを外す
 「通知領域にフリックアイコンを表示する」チェックを外す


・タップ時のアニメーションを消す
 「サービス」の「Tablet PC Input Service」を「無効」にする。
 デフォルトでは「自動」になっている
 →無効にするとコントロールパネルの「ペンとタッチ」と「Tablet PC設定」が表示されなくなる。
  ペンは効くが、指が効かなくなる。


 「Windowsの機能の有効化または無効化」から「Tablet PCコンポーネント」のチェックを外す
  (todo:キーボードのウィンドウが表示されなくなる)


 「gpedit.msc」を実行
 「ローカルコンピューターポリシー」
  「ユーザーの構成」
   「管理用テンプレート」
    「Windowsコンポーネント」
     「Tablet PC」
      「カーソル」→右ペインの「ペンのフィードバックをオフにする」「有効」にする。
       (todo:これはTablet PC Input Serviceを無効にしていれば必要ないか)


 「デバイスマネージャー」の「ヒューマンインターフェイスデバイス」から「Wacom Virtual Hid Driver」を無効にする。
  (todo:これは副作用があり、不可。筆圧がきかなくなるか)


・ワコムの設定
 「コントロールパネル」→「ワコムタブレットのプロパティ」→「ペン」タブ
 「ダブルクリック距離」を「OFF」にする。
  (todo:これを行わないと書いて離して書いての時にダブルクリックと認識されてしまう)

 「デジタルインク機能を使う」のチェックを外す
 (todo:筆圧検知しなくなる?)

2013年8月21日水曜日

オフィス2013のオフラインインストール(パッケージ版)

・ライセンスキーの入力
 httpsでofficesetup.getmicrosoftkey.comにアクセスして購入時のプロダクトキーを入力する
 その際にマイクロソフトのアカウント作成も必要。

・マイクロソフトのサイト
 httpsでoffice.microsoft.comにアクセスして、右上からログインできます。

・プロダクトキーをwebサイトから登録
 右上の▼から「マイアカウントページ」選択
 マイアカウントページで緑背景色の「インストール」選択

・DVDメディアの入手
 右上の▼から「マイアカウントページ」選択
 マイアカウントページで「ディスクからのインストール」選択
 「ディスクに書き込む」クリックでイメージがダウンロードできる。

・DVDメディアからのインストール
 右上の▼から「マイアカウントページ」選択
 マイアカウントページで「ディスクからのインストール」選択
 「ディスクを持っている場合」クリック
 「プロダクトキーの表示」で、購入したパッケージの中に入っているキーとは別のキーが表示される。
 メディアからインストールする場合はこっちのキーを使う。
 パッケージのキーでは認証できない

2013年8月16日金曜日

Windows7のスタートアップ修復画面を出さない方法(bcdedit.exe)

bcdedit.exeで設定できる。


bcdedit.exeを実行すると現在のリストが表示される。

 「Windows ブート ローダー」セクションを観る

 「identifier」が「{current}」になっているのが現在起動してるブート
 その中に「recoveryenabled」がありデフォルトでは「Yes」になっている。
 ここが「Yes」になっていると、修復画面が有効なため以下の手順で消す。

  >bcdedit.exe /deletevalue {current} recoveryenabled

 もう一度bcdedit.exeでリストを見ると「recoveryenabled」の行自体が消えている。



これはWindows2008R2でもありました。
それで、スタートアップ修復画面ですが、これで直った試しがありません(^^;
電源を強制終了すると、なにも壊れていないのに、出ちゃうし、ずっとまたされるだけです。
キャンセルができないのが困りますね。
また、本当にwindowsが起動しないときは、この画面を進めても直ったことがありません(^^;
この修復画面の機能がなにをしているのか、どの様なときに有効なのか、
調べていませんが今のところこのような印象なため、消してしまいます(^^;

2013年8月15日木曜日

bcdedit.exeを使ったVHDブートの設定方法


○エントリ
>bcdedit.exe /create /d "new_boot" /application OSLOADER

 これを実行すると以下のようなメッセージが出る
 「エントリ {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx} は正常に作成されました」

 この長いエントリ文字列が重要。常にこの値を指定してオプションを設定していく

 「/d」オプションは「description」表示名に設定される

 この時点で bcdedit.exeを引数無しで実行してリストを表示しても、このエントリは表示されない。


○表示と追加

>bcdedit.exe /displayorder {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}
 これで表示される様になる。
 ただし、この場合現在の{current}を置き換えるので今の状態が起動できなくなる。

 実行してしまった場合は、再起動せずに、「bcdedit.exe /displayorder {current}」で戻る
 なお、「{current}」の実際の値が知りたい場合は「bcdedit.exe /v」で実行する。


 よって、マルチブートの場合は、並列して書く。
>bcdedit.exe /displayorder {current} {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}
 この場合デフォルトは「{current}」になる。

 「/displayorder」はさらにオプションがあり「/addfirst」「/addlast」「/remove」が使える。



>bcdedit.exe /default {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}
 デフォルトを変えるオプション

>bcdedit.exe /timeout 10
 10秒待つようになる。
 todo:しかし画面表示されない場合があった。


○パーティション

>bcdedit.exe /set {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx} device   VHD=[C:]\vhdfile\c_drive.vhd
>bcdedit.exe /set {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx} osdevice VHD=[C:]\vhdfile\c_drive.vhd
 Cドライブのvhdファイルを指定する。
 「[C:]」の設定部分の解釈はtodo

 なおVHDで無い場合は以下の様に書く様だ。
>bcdedit.exe /set {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx} device   partition=C:
>bcdedit.exe /set {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx} osdevice  partition=C:


○オプション
 その他の細かいオプションも設定する。
 bcdedit.exeで実行して現在のブートローダーのオプションと同様に設定する。

>bcdedit.exe /set {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx} path \Windows\system32\winload.exe
>bcdedit.exe /set {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx} description new_boot
 ※/createの際の/dと同じようにここでも設定できる

>bcdedit.exe /set {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx} locale ja-JP
>bcdedit.exe /set {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx} systemroot \Windows
>bcdedit.exe /set {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx} detecthal on
 ※ハードウェア構成の検出のために必要。「on」の代わりに「yes」でもいいらしいtodo



マイクロソフトは、VHDブートをどのくらい本気で力を入れているのかと
マイクロソフトの対応の早さがどうだろうと気になるこのごろです。

2013年8月14日水曜日

bcdedit.exeによる設定例

bcdedit.exeでどの様に設定されるのか。
例として私のPCの出力結果です。

「bcdedit.exe」
>Windows ブート マネージャー
>--------------------------------
>identifier              {bootmgr}
>device                  partition=\Device\HarddiskVolume2
>description             Windows Boot Manager
>locale                  ja-JP
>inherit                 {globalsettings}
>default                 {current}
>resumeobject            {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}
>displayorder            {current}
>toolsdisplayorder       {memdiag}
>timeout                 30

>Windows ブート ローダー
>--------------------------------
>identifier              {current}
>device                  partition=C:
>path                    \Windows\system32\winload.exe
>description             Windows 7
>locale                  ja-JP
>inherit                 {bootloadersettings}
>recoverysequence        {yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy}
>recoveryenabled         Yes
>osdevice                partition=C:
>systemroot              \Windows
>resumeobject            {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}
>nx                      OptIn


「bcdedit.exe /v」
>Windows ブート マネージャー
>--------------------------------
>identifier              {eeeeeeee-eeee-eeee-eeee-eeeeeeeeeeeee}
>device                  partition=\Device\HarddiskVolume2
>description             Windows Boot Manager
>locale                  ja-JP
>inherit                 {aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa}
>default                 {bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb} ←B
>resumeobject            {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx} ←X
>displayorder            {bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb} ←B
>toolsdisplayorder       {cccccccc-cccc-cccc-cccc-cccccccccccc}
>timeout                 30

>Windows ブート ローダー
>--------------------------------
>identifier              {bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb} ←B
>device                  partition=C:
>path                    \Windows\system32\winload.exe
>description             Windows 7
>locale                  ja-JP
>inherit                 {dddddddd-dddd-dddd-dddd-dddddddddddd}
>recoverysequence        {yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy}
>recoveryenabled         Yes
>osdevice                partition=C:
>systemroot              \Windows
>resumeobject            {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx} ←X
>nx                      OptIn

結論は、ブートローダーのidentifierとブートマネージャーのdefault, displayorderを合わせる事。

のみですね。(^^;
Windowsでは珍しいオプションのみでの設定になるので、
どんな項目があるの?で止まらないように例です。

2013年7月27日土曜日

トーストの使用方法(Toastクラス)

Toast(トースト)の使用方法です。
デバッグ用に、ちょいと挿入して確認するにも便利です。

     Toast.makeText(this, "hello", Toast.LENGTH_LONG).show();


短く表示は、Toast.LENGTH_SHORT)です。


例えばボタンをクリックしたのを確認なら以下。
    public void clicktest( View view) {
    Toast.makeText(this, "hello", Toast.LENGTH_SHORT).show();
    }

importで以下も必要。
 import android.widget.Toast;

よって、importの記載も省略なら以下です。

     android.widget.Toast.makeText(this, "hello", android.widget.Toast.LENGTH_SHORT).show();


べんりですね。

2013年7月25日木曜日

Windows7からWindowsXPの共有ファイルにアクセスできない場合の対処

Windows7からWindowsXPの共有ファイルにアクセスできない場合の対処方法です。


古いNASやWindows2000, Windows2003Serverも該当する場合があります。
アクセスする側のWindows7のパソコンの設定を変更します。

この問題が解消するケースは、共有ファイルにアクセスしようとしたときに
IDパスワードを聞いてきて、正しく入力したにもかかわらずログインできず
「ログオン失敗:ユーザー名を認識できないか、またはパスワードが間違っています。」
と表示される場合です。



○コマンドラインより gpedit.msc 実行
 「ローカルグループポリシエディター」を起動して

左ペインより以下の通り開いていきます。
「ローカルコンピューターポリシー」
  「コンピュータの構成」
     「Windowsの設定」
       「セキュリティの設定」
         「ローカルポリシー」
            「セキュリティオプション」

右ペインの真ん中辺りにある項目
「ネットワークセキュリティ:LAN Manager認証レベル」のプロパティを開く
 デフォルトは「未定義」に設定されているが
 例えば「LMとNTLM応答を送信する」を選ぶ。






古いWindowsXP側のNTLMv2に不具合があるのか?LM & NTLMであれば問題ない。
一般家庭などでは実際は気にしなくていいと判断できる場合が多いと思いますが、
セキュリティを気にする場合は要注意の変更項目です。
古いPCが混じっていると、うーんって事がありますが、仕方ないですねえ。
メーカーとしては新しいOSで直しています。当時はこれで問題無く後から出たWindows7との対応で。という事ですものね。
tipsとしてメモしていくしかないですねぇ。

2013年7月19日金曜日

DB2のメモリ設定方法

DB2のメモリ設定方法です。

update dbm cfg using instance_memory 1024 immediate;


ページ数を入れる。
ページ数1024に1ページ4kbをかけると使用するメモリ容量になる。

メモリ容量を1GBとして 1024 * 1024 * 1024 = 1073741824バイト = 1GB
1ページ当たりのバイト数は 4 * 1024 = 4096
計算は 1073741824 / 4096 = 262144

よって、262144と書けば、メモリ1GBです。

ただ、起動時から全部使われるわけではありませんでした。

1ページ4kbも設定によって違うのかな。要確認です。

2013年7月17日水曜日

Windows7起動直後にネットワークが有効になっていない問題

Windows7起動のログオン直後にネットワークが有効になっていないために
ネットワーク関連のプログラムがエラーを出してしまう場合の対応方法。

gpedit.msc起動
左ペイン
 「ローカルコンピュータポリシー」
  「コンピュータの構成」
   「管理用テンプレート」
    「システム」
     「ログオン」
右ペイン
 「コンピュータの起動およびログオンで常にネットワークを待つ」
  →「未構成」から「有効」に変更する。

自動ログオンの場合に発生する。
ネットワークデバイスの認識とログオン後の処理のタイミングによって表面化する。
この設定をすると、ネットワークが有効になったのを待ってから自動ログオン処理が走る。
しかし要確認(ネットワークデバイスの認識?それでも対応できない場合があった?)
ところで、これって、アプリケーションの問題だと思います。
言い換えるならアプリケーションで回避、対処していくべき問題。
これをアプリケーションに手を入れなければと思わない時点で末期だとも思いますがケースバイケースですね。
でも技術者としてどうなんだろうと自問が続きます。

2013年7月16日火曜日

Serviceの使い方

呼ばれる側
・public class MainService extends Service {で、Serviceを継承する。
・開始時はonStartCommand()が呼ばれる。
・終了時はonDestroy()が呼ばれる

呼ぶ側
・開始方法
 Intent intent = new Intent(MainActivity.this, MainService.class);
 startService(intent);
 Intentの引数で、自分のインスタンス、呼びたいクラスを書いてstartServiceを呼ぶ。
・終了方法
 Intent intent = new Intent(MainActivity.this, MainService.class);
 stopService(intent);
 同じようにstopServiceを呼ぶ。intentは同じインスタンスでなくてよいらしい。
 (少しなぜだろうと思います)




Activityでのアプリケーションではタスクを落とされちゃうからServiceを使うのです。
タスクは落とされなくていいと思うのですが、なんでこういうしようなのかと
コーディングするといつも思います。
リソースの少ないスマホだからとはいってもベースとなるlinuxが開発された当初のパソコンは
もっともっとリソースが少ないと思うのです。
なんてことをいつも思いつつ、OSには従うのです。はい。

2013年7月15日月曜日

画面を消灯、スリープさせない

○消灯させない
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

○解除する
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);


簡単でした。
そのアプリケーションが表示されているときだけ有効です。
裏に隠れているときは制御されませんでした。


ちなみに、android.permission.WAKE_LOCKは必要ありません。
このpermissionは、また違う方法の様です。
裏に隠れていても、制御が効く方法があるような、ver4で推奨されなくなったような。
調査中です。でもそもそもアプリが積極的にコントロールするべきでないかなと
思ったところから、このFLAG_KEEP_SCREEN_ONでokでした。
現在の状態を確認する必要は無く、add,addとか、add無くclearもokの様です。

2013年7月14日日曜日

リングトーンの基本パターン

リングトーン、アラームの基本的な使い方です。


○インスタンスの生成
Uri uri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM);
Ringtone tone = RingtoneManager.getRingtone(context.getApplicationContext(), uri);

○リングトーンを動かす
tone.play();

○リングトーンを止める
tone.stop();



プログラム作り途中に、ちょっと間違えると鳴りっぱなしになっちゃってちょっと大変でした。
これもまた簡単ですね。
Ringtoneの名前の通り、電話の着信音ですね。
androidのOS側の設定で、ボリュームが、音楽、着信音、アラームに別れているので、
追ってその関係を確認してまとめます。


2013年7月13日土曜日

バイブレーターの基本パターン

バイブレーターの基本的な使い方です。

○インスタンスの生成
Vibrator vibrator = (Vibrator)context.getSystemService(Context.VIBRATOR_SERVICE);

○バイブレーターを動かす
long pattern[] = {200, 800};
vibrator.vibrate(pattern,0);                  

○バイブレーターを止める
vibrator.cancel();


patternは、止める、動かすのミリ秒です。
疑似音階も作れるかもと思いました。

なっている間、インスタンスは保持して、そのインスタンスにcancelする必要があります。
物理的なバイブレーターはひとつなのでシングルトンでもいい様な気がしますがそうではないです。
それにしても簡単に扱えて便利なものです。

2013年7月12日金曜日

javaの日付、時間、ミリ秒の扱い

例)
Calendar calender = Calendar.getInstance();

    int year = calender.get(Calendar.YEAR);
    int month = calender.get(Calendar.MONTH) + 1; //0始まり
    int day = calender.get(Calendar.DATE);
    int hour = calender.get(Calendar.HOUR_OF_DAY);
    int minute = calender.get(Calendar.MINUTE);
    int second = calender.get(Calendar.SECOND);
    int millisecond = calender.get(Calendar.MILLISECOND);
 
Toast.makeText(this, "["+ Long.valueOf(year)+"]["+ Long.valueOf(month)+"]["+ Long.valueOf(day)+"]["+ Long.valueOf(hour)+"]["+ Long.valueOf(minute)+"]["+ Long.valueOf(second)+"]["+ Long.valueOf(millisecond)+"]", Toast.LENGTH_LONG).show();


ちなみに。メモです。
3600 = 1時間
3600 * 24 = 86400 = 24時間 = 1日
86400 * 365 = 1年 = 31536000
31536000 * 3000 = 3000年 = 94608000000 = 94608000000
94608000000 * 1000 =  94608000000000ミリ秒含む
94608000000000
9223372036854775807 long最大
-9223372036854775808 long最小

らくちんな世の中になったものです(^_^)

2013年7月11日木曜日

Samsung SSD 840 PROベンチマーク


-----------------------------------------------------------------------
CrystalDiskMark 3.0.2 (C) 2007-2013 hiyohiyo
                           Crystal Dew World : http://crystalmark.info/
-----------------------------------------------------------------------
* MB/s = 1,000,000 byte/s [SATA/300 = 300,000,000 byte/s]
           Sequential Read :   272.996 MB/s
          Sequential Write :    28.391 MB/s
         Random Read 512KB :   246.046 MB/s
        Random Write 512KB :    51.092 MB/s
    Random Read 4KB (QD=1) :    31.857 MB/s [  7777.6 IOPS]
   Random Write 4KB (QD=1) :     2.161 MB/s [   527.7 IOPS]
   Random Read 4KB (QD=32) :   214.346 MB/s [ 52330.7 IOPS]
  Random Write 4KB (QD=32) :    11.455 MB/s [  2796.6 IOPS]
  Test : 1000 MB [C: 61.8% (146.7/237.4 GB)] (x5) <0Fill>
  Date : 2013/07/09 11:49:02
    OS : Windows Server 2008 R2 Server Standard Edition (full installation) SP1 [6.1 Build 7601] (x64)
SamsungのSSD「840 PRO 256GB」を飼ったのでベンチマークを取ってみました。
PC本体はオンボードでRAIDが載っています。「LSI Embedded MegaRAID」です。
他のサイトで評価されている数値よりかなり低いです。遅いですね。
もう少し期待していたのですが、少しこまったものです。
もしかしてと思いHDDのベンチマークを取ってみたらもっと遅かったです。
SSD自体は速いと言うことですね。
上の測定結果は0Fillですが、他のもおおよそ変わりませんでした。

2013年7月10日水曜日

javaの文字列

型はString

先頭のSは大文字です。

if文などでの比較


String val = ~
if ( val.equals( "~") == true) {


少し分かりづらいです。
val == "~"と書きたいところですが
だめなものはだめですね。
でもせめてコンパイルエラーは出て欲しいところですが
エラーも出ないようです。
うむ。




boolean は先頭、小文字のb。boolでもありません。

もう少し話はそれてC#の予約語はbool。System.Booleanは別名
stringが予約語で、System.Stringが別名
==で比較できます。
ちょっとややこしいです。

2013年7月9日火曜日

リソースの文字列をjavaのコーディングの中で使用する。


例)
getString(R.string.hour)


getString()メソッドを使う。

定義は「String android.content.Context.getString(int resId)」です。

その引数でR.string.~ を指定すればよい。

android開発の入門書を読むとlayoutにstring resourceを使う事は必ずといっていいほど
載っているのに、javaのコーディング中で多言語対応する方法が見つかりませんでした。
見つけてしまえば簡単な方法です。
androidでアプリケーションを作るなら多言語対応は必須にしたいです。
そしてその方法がとても楽です。

2013年7月8日月曜日

String.formatの使い方



この例では%02dで、数字を0埋め2桁の文字列に変換しています。


http://www.ne.jp/asahi/hishidama/home/tech/java/formatter.html
  1. String[] itemList = new String[60];
  2. for ( int num = 0 ; num < 60; num++) {
  3.     itemList[num] = String.format("%02d",num);
  4. }

昔ながらのC言語のライブラリと同じです。
昔とは、10年前ではなく、30年?50年?歴史です。
すごいことです。K&Rです。
読みました。2冊持っていました。3冊かも?
今どこにあるんだろう。歴史、いいですね。

2013年7月7日日曜日

diskpartの使い方

diskpartの使い方です。

コマンドラインよりdiskpart実行

list disk
・「サイズ」で該当のディスクを探す。
・「ディスクの管理」画面の右下ペインの「ディスクx」のx数字と合っている。

select disk 5
・5にディスク番号を入れる。
・もう一度list diskで選択したディスクの先頭に*が付いていることを確認する。

list partition
・選択したディスクのパーティ書であることを確認する。
・「ディスクの管理」画面の右下ペインの「ディスクx」のx数字と合っている。

select partition 1
・もう一度list partitionで選択したディスクの先頭に*が付いていることを確認する。

active
・選択したパーティションをアクティブとしてマークするコマンド


ーー
diskpartの使い方ですが、他のサイトでも多く紹介されていますが
コマンドラインで確認わかりにくく、間違えるとデータが消えてしまうので
確認方法も含めたメモです。

2013年7月6日土曜日

C#のテキストファイルの読み込み、書き込み


 StreamWriter writer = new StreamWriter(@"~_in.txt", false, System.Text.Encoding.GetEncoding("shift_jis"));
 StreamReader reader = new StreamReader(@"~_out.txt", System.Text.Encoding.GetEncoding("shift_jis"));
 while (reader.EndOfStream == false)
 {
     string line = reader.ReadLine();
     string outLine = "";
     for (int num = 0; num < line.Length; )
     {
         outLine = outLine + line.Substring(num, 1);
         num++;
     }
     writer.WriteLine(outLine);
 }
 reader.Close();
 writer.Close();

C#でテキストファイルの読み込みと書き込みの基本パターンです。
いつも使うのでメモメモ。
javaとC#がいつもふと、あれ、と思うことがあります。

ついでに、文字列の一部分を取り出すのはC#の場合Substring()です。
midだったりいろいろありますね。

2013年7月5日金曜日

AlertDialogの使い方

  1. public void onClickSS(View view) {
  2.     String[] itemList = {"0","1","2","3","4","5","6","7","8","9"};
  3.     AlertDialog.Builder dialog = new AlertDialog.Builder(this);
  4.     dialog.setTitle("選択タイトル");
  5.     dialog.setItems(itemList,new DialogInterface.OnClickListener(){
  6.         public void onClick(DialogInterface dialog, int which) {
  7.             Button button = (Button)findViewById(R.id.text_ss);
  8.             button.setText(String.valueOf(which));
  9.         }
  10.     });
  11.     dialog.create();
  12.     dialog.show(); 
  13. }

基本の例です。
リストを文字列の配列で用意する。
AlertDialog.Builderを使う。
setTitleでリストのタイトルの文字列
setItemsで文字列を指定。
それとonClick時のイベントを記載する。
show()で表示

create()は無くてもよい。showでよいらしい。

onClick時の処理
whichに番号が入るのでそれをキーにして処理をする。
例ではボタンの文字列を変えています。

この場合、戻るボタンが有効ですが、無効にするにはsetCancelable(false);をいれればよい。

ダイアログの使い方ひとつずつ、メソッドを一通り読むしかないですね。

2013年7月4日木曜日

設定値の保存

SharedPreferencesクラスを使う。
キーと値の対で読み書きを行う。
値はstring,boolean,longなどの型が必要


・書き込み
  String arg = ~
  String val;

  Editor editor = preferences.edit();
  editor.putString(arg, val);
  editor.commit();

 editで開けて、commitで閉じる。
 文字列なのでputStringを使う。

・読み込み
String arg = ~
  String val = preferences.getString(arg, ""); //デフォルトnull決め

 読み出しはオープン、クローズは必要ない。
 文字列はgetStringで読み込む。
 デフォルトの値を引数に渡す。


ラッパークラスを作って使いやすくしてます。
単純なキーと値の対は使いやすくて便利です。
複数文字列などを扱う場合はちょっとメソッドを作り込んでですね。

2013年7月3日水曜日

SQL Server Agentのjob修正方法

少しマイナーなコマンドかもしれないのでメモします。
例)
EXEC dbo.sp_update_jobstep
 @job_name = N'jobtask',
 @step_id = 1,
 @output_file_name = '',
 @flags = 0;
jobtaskというジョブの1番目のstepのオプション、ログの出力を止める変更です。

このログの出力されたファイルが2GBを超えると、jobが動かなくなるようです。
定期的に消すオプションもないようですし、困ったものです。
マイクロソフトやほかの企業含め、永続的に使っていないんじゃないかと勘ぐります。
マイナーソフトだったり機能だったりはこういう面で不利ですね。
メジャーな物を使っている。という事だけでこういったことは回避できるのかもしれません。
そうはいっても何事も最終的には自身で確認していく必要はあるのですが
その母数の違いはあるかなと思います。
windowsのtask使うのと余り変わらないように思いますし。

2013年7月2日火曜日

RelativeLayoutの指定方法

縦横の組でまとめました。


○基準
 ※Parentが付いている

基準を左上に作る
 android:layout_alignParentLeft="true"
 android:layout_alignParentTop="true"

基準を左下に作る
 android:layout_alignParentBottom="true"
 android:layout_alignParentLeft="true"


○従属

左をそろえて、下に置く
 android:layout_alignLeft="@+id/rootLabel"
 android:layout_below="@+id/rootLabel"

上をそろえて、右に置く
 android:layout_alignTop="@id/rootLabel"
 android:layout_toRightOf="@id/rootLabel"


いろいろなオプションが自由自在にありますが、基本的な構成はこれだけで十分表現できると思います。
レイアウトもRelativeLayoutのみで十分だと思います。


2013年7月1日月曜日

SQL Serverのインデックス再作成

SQL Serverのインデックス再作成ですが、データベースに存在するテーブル名を全て指定する必要はありません。

sp_MSForeachtable "dbcc dbreindex('?')"




便利です。
これを実行する際は、他のクライアントとは排他アクセスになるらしい。
メンテナンス時間を作って作業ですね。
しかし、これをやっても余り速くならないような、ごくごく若干のみ速くなるような。
私が扱っているテーブルでは効果が薄いようです。
クラスターキーを設定しているせいかなとも思います。
テーブルの設計が正しいと言うことでしょうか。
しかし桁の違うデータ量、レコード数を扱っているオンラインシステムはどの様な設計をしているのか
そもそも発想が違うのか。単なるハードウェア増強の力任せで、パフォーマンス本当に上がっているのか。
興味あります。

2013年6月30日日曜日

Notificationのアイコンサイズ

Notification notification = new NotificationCompat.Builder(context).setSmallIcon(R.drawable.ic_stat_notify_cat)

Notificationに表示するアイコン「R.drawable.ic_stat_notify_??」のアイコンサイズ。

res/
  drawable-hdpi  36x36px
  drawable-ldpi  18x18px
  drawable-mdpi  24x24px
  drawable-xhdpi  48x48px
  drawable-xxhdpi 

ファイル名は「ic_stat_notify_」のプレフィックスが慣例。
例えば(ic_stat_notify_cat.png)といったファイル名を付ける。


こないだ、画像が切れて表示されて何でだろうと解決しなかったのですが、
アプリケーションのアイコンを指定していたのが原因だったと後から気づきました。
別のリソースを指定するのね。めもめも。

2013年6月29日土曜日

androidアプリケーションのアイコン

androidアプリケーションに付けるアイコンの規則

・ファイル名 ic_launcher.png

・保存先ディレクトリ
 res/
   drawable-hdpi   72x72px
   drawable-ldpi 
   drawable-mdpi   48x48px
   drawable-xhdpi  96x86px
   drawable-xxhdpi 144x144px

作成したアイコンのファイル名は固定で「ic_launcher.png」になり、
「res」ディレクトリの下に「drawable-?dpi」のディレクトリを作ってその中に置く。
それぞれのアイコンサイズは上記の通り。


上の表は、エクスプローラーやeclipseで表示される順番に書きました。
本などは小さい順に書かれていて、核ならその順番が妥当なのですが
いざ画面上と順番が違い戸惑いましたので並べ直してみました。

アイコンの作成はイラストレーターを使ったのですが、それぞれのサイズのファイルを
一度に出力できる方法がないかと調べている最中です。
何か少し修正するごとにアイコンファイルを何個もエクスポートするのがちょっと手間になってます。

2013年6月28日金曜日

package名に記載するURLにハイフン記号「-」が含まれる場合

マイナス記号「-」はアンダーコア「_」に書き換えるとの事。



このサイトも「stella-house-software」でしてeclipseでpackage nameを入力しようとしたら
マイナスが入力できません。ホームページのURLを換えて最初から作り直しが必要なのかと
少し心配しながらあれこれ探してみたらアンダーコアに書き換えればよいとの事です。
よかったです。これからは「stella_house_software」でパッケージ名を統一します。
私の場合は「jp.blogspot.stella_house_software」です。

もともとはこのサイトを作るときにアンダーコアを使いたかったのですが使えずに
どうしようかなと考えて、ハイフン記号に置き換えたのですが、
こんどはpackage nameで逆の悩みが出て確認しました。

2013年6月27日木曜日

eclipseに「Android SDK Manager」「Android Virtual Device Manager」が表示されない

android SDKをインストールしたにも関わらずeclipseでandroid関連のメニューが表示されない場合


eclipseの「Window」メニューに「Android SDK Manager」が表示されない場合は下記の設定で表示される。
 「Window」メニュー
   「Customize Perspective...」
      ↓
   「Command Groups Availability」タブ選択
      ↓
   「Android SDK and AVD Manager」にチェックを入れると表示される。


eclipseの「File」メニュー→「New」に「Android Application Project」が表示されない
 「Window」メニュー
   「Customize Perspective...」
      ↓
   「Menu Visibility」タブ選択
      ↓
   「File」クリック
     「New」クリック
       「Android Application Project」をチェックすると表示される



この問題は、そもそもどうしてeclipseのメニューから突然消えてしまう事があるのだろうと思います。
sdkのディレクトリを変更したらなるのかな。再インストール扱い(?)の様な手順があるのか。
いまいちわかりません。
でも、そもそもいらない項目をメニューから削除したりするのもこの辺りなので情報としてメモです。

2013年6月26日水曜日

targetSkVersionのエラー


AndroidManifest.xmlのtargetSdkVersionを変更すると警告メッセージが出る問題



>    <uses-sdk
>        android:minSdkVersion="8"
>        android:targetSdkVersion="8" />

 以下の警告メッセージが出る。
>Not targeting the latest versions of Android; compatibility modes apply.
>Consider testing and updating this version.
>Consult the android.os.Build.VERSION_CODES javadoc for details.
eclipsのメニューより「Project」→「Clearn」を実行するとエラーは消えるが、再度ビルドし直すと再発する。

(調査中)
android:targetSdkVersionがアンドロイドの最新バージョンになっていないと必ず出る警告(らしい)

結局は、そういう使い方自体がナンセンスですよ。という事なのだと思いますがver8ならver8でと思ってしまうのですがその辺りの解釈が違うのかなと思いました。
実際は何も問題が無いのでいいかなとも思っています(^_^;
それよりも、様々なandroidの実機がほしくなりますね。画面の大きさの違いやバージョンの違いなど気になります。

2013年6月25日火曜日

「設定」画面の「端末設定」の中にある「microSDと端末容量」の画面を出す方法

「設定」画面の「端末設定」の中にある「microSDと端末容量」の画面を出す方法
  1. public void buttonClick( View view) {
  2.     Intent intent = new Intent(android.provider.Settings.ACTION_INTERNAL_STORAGE_SETTINGS);
  3.     startActivity(intent);
  4. }
 ↓ボタンをクリックすると「microSDと端末容量」の画面が表示される。


これも設定画面のひとつで、プログラムから呼べました。メモメモです。
本当はもうちょっと違う画面を出したくて試行錯誤しているのですがたどり着きません。
android.provider.settingsのパッケージのリストは出たので一度全部動かしてみたいなと思いました。
まえのwifiの記事では文字列で渡したのでその関係もちゃんと理解が必要だなと思いました。



2013年6月24日月曜日

「設定」の「無線とネットワーク」の中の「Wi-Fi」の画面を出す方法

「設定」の「無線とネットワーク」の中の「Wi-Fi」の画面を出す方法です


  1.         Intent intent = new Intent();
  2.         intent.setClassName("com.android.settings", "com.android.settings.Settings$WifiSettingsActivity");
  3.         this.startActivity(intent);

クリックすると以下の画面が表示されます。


問題の本質は、このandroidの設定画面などのpackage name(というのかな?)を一覧で調べる方法がないかと思うのですが、今のところは、あれこれ情報を少し得てはやってみて動いたとかくにんしています。いろいろ試してもプログラムから出せない項目も多く、なぜ出せないのか、ではこの画面はなぜ出せるのか、ソースコードの見方を覚えた方がいいのかな。

2013年6月23日日曜日

android AVDの保存先を変更する

android Virtual Device Managerで作成した設定ファイルなどを保存するディレクトリを変更するには
環境変数「ANDROID_SDK_HOME」にパスを書く

例)
ANDROID_SDK_HOME=D:\local\ANDROID_SDK_HOME

この例では「D:\local\ANDROID_SDK_HOME」のディレクトリの中に「.android」ディレクトリが作成される。
通常はWindowsのユーザーディレクトリの直下に作成されるがCドライブの容量が少なかったので移動させました。
バーチャルマシンのファイルが置かれるのでファイルサイズが結構大きくなるのでCドライブの容量が少ない場合は要チェックです。

これも前の記事と同じ私のSSDの容量が少ないからですが、linux文化に近いandroidがc:\usersの下に作られるのは少し変な感じがしました。

2013年6月22日土曜日

android SDKのインストール先の変更

android SDKをインストールしたディレクトリを変更した場合、eclipseで設定して認識させる必要がある。

「Windows」メニューの中の「Preferences」選択

「Preferences」ウィンドウの左ペイン「Android」クリック
 ↓
右ペインの「SDK Location」にインストールしたディレクトリをしていする。

例)
「SDK Location:」「D:\local\android-sdks」

この「D:\local\android-sdks」ディレクトリの直下に「AVD Manager.exe」や「SDK Manager.exe」が存在している。



私の使っているSSDが80GBでして、windows7にあれやれこや入れているのですがどうにもCドライブがいっぱいで、ディスク容量を気にしてあれこれだなんて最近やらない話だったなと思いながら一生懸命テンポラリをDドライブに設定変更したりしています。SSDも安くなってきましたし買い換えちゃうのが一番早いのですが、仕組みの話は覚えて置こうと思いました。

2013年6月21日金曜日

「adb.exe」Android Debug Bridgeをコマンドラインから起動できるようにする

コマンドラインからadb.exeが実行できるように、環境変数のPATHに「adb.exe」が存在するディレクトリを追加する


例)
「PATH」「D:\local\android-sdks\platform-tools」

Windowsパソコンでの設定方法
「コントロールパネル」から「システムとセキュリティ」→「システム」→左ペイン「システムの詳細設定」クリック

「システムのプロパティ」ウィンドウの「詳細設定」タブ→「環境変数」ボタンクリック

「環境変数」ウィンドウの上の方の「ユーザーの環境変数」の中の「新規」クリック

「変数名」に「PATH」入力
「変数値」に「D:\local\android-sdks\platform-tools」入力

すでに「PATH」が存在する場合はすでに入力されている「変数値」の中の文字列の最後にセミコロンをいれて「;D:\local\android-sdks\platform-tools」を入力する



windowsの環境変数というより、dosの環境変数ですね。昔はdosの中でwindowsが動いていましたが、いつのまにやらwindowsのなかでdosが動くようにはなりましたがdosはいまも現役です(^_^)

2013年6月20日木曜日

アプリケーションにadmobの広告を入れる方法

アプリケーションにadmobの広告を入れる方法です。


○ライブラリ
エクスプローラーから「GoogleAdMobAdsSdk-6.4.1.jar」をeclipseの「lib」へドラックアンドドロップする。

すると以下のダイアログが出る
>File Operation
>Select how files should be imported into the project
「Copy files」か「Link to files」が選べるので「Copy files」を選んで「OK」をクリックする


○マニフェスト
AndroidManifest.xmlに以下の2つの権限を入れる。
(users-permissionはmanifestタグのひとつ下に入れる)
  <uses-permission android:name="android.permission.INTERNET"/>
  <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

AndroidManifest.xmlにはadmob用のactivityも記入する。


○レイアウト
layout.xmlの最初の <RelativeLayout>の中にはxmlns:ads="~の一文を入れる。

xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"

layout.xmlへ表示用のタグを入れる (ads:adUnitIdはそれぞれ割り当てられたIDを入力する)

テスト中は、ads:testDevices="TEST_EMULATOR, TEST_DEVICE_ID"の文字を入れておく。