FC2ブログ
10 «1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.» 12

ハルシオンシステムの気ままBlog

株式会社ハルシオンシステムのメンバーが送る、UnityやらJavaやらの技術的話題から、自社開発のアプリの宣伝とかとかのブログです。ほんと気ままにいきたいと思います。更新日は毎週 月 木でっす!

 

【Java】SQLiteでDBを操作してみる その2 

( ノ゚Д゚)こんにちは~
大坂です。

モンスラ」をリリースしてから9日立ちました。
皆様・・・本当に・・・ダウンロードだけでもいいので・・・お願いしますm(_ _)m

はい、先週に引き続きSQLiteのお話です。
ネタがないので細かく区切ってるのは皆様お気づきでしょう。

先週はテーブルを作成するところを書いたので、今週はテーブルへのアクセスとセレクトについて。


public class TestActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

LinearLayout layout = new LinearLayout(this);
layout.setOrientation(LinearLayout.VERTICAL);
setContentView(layout);

// 先週書いた記事のDBHelper
TestDatabaseHelper helper = new TestDatabaseHelper(this);
SQLiteDatabase db = helper.getReadableDatabase();

// テーブル名, 取得するカラムを指定
Cursor c = db.query("test_table", new String[] { "*" },
null, null, null, null, null);

// セレクトされた行があればTrueが返却される
boolean isData = c.moveToFirst();

while (isData) {
// idを取得
int id = c.getInt(c.getColumnIndex(BaseColumns._ID));
// 名前を取得
String name = c.getString(c.getColumnIndex("name"));
// 性別を取得
String sex = c.getString(c.getColumnIndex("sex"));
// 年齢を取得
String age = c.getString(c.getColumnIndex("age"));

// テキストビューを生成
TextView tv = new TextView(this);
tv.setText("ID:" + id + ", 名前:" + name + ", 性別" + sex + ", 年齢" + age);

// テキストビューをレイアウトに追加
layout.addView(tv);

isData = c.moveToNext()
}
// カーソルのクローズ
c.close();
// dbのクローズ
db.close();
}
}

「queryメソッド」の引数について
第一引数:String テーブル名
第二引数:String[] セレクトするカラム名
第三引数:String 検索条件にするカラム
第四引数:String[] 検索条件のパラメータ
第五引数:String group by句
第六引数:String having句
第七引数:String order by句

今日はここまで!
ではでは、また来週(´・ω・)ノシ

Category: 開発日記(Java)

Thread: 日記

Janre: 日記

tb 0 : cm 0   

【Java】SQLiteでDBを操作してみる その1 

こんにちは~
大坂です。

モンスラ」リリースしてから2日立ちました。ダウンロード数があまり伸びません(´・ω・`)
皆さんダウンロードよろしくお願いします!

アンドロック様にもレビュー掲載していただいたので、見てみてください。

先週「SharedPreferences」でのデータやりとりについて書いたので、データつながりということで、「SQLite」について書いていきます。
とりあえず、その1ということでテーブルの作成方法を紹介です。

public class TestDatabaseHelper extends SQLiteOpenHelper {

// DBのバージョン設定(バージョンを変えるとonUpgradeが実行されます)
public static final CURRENT_DATABASE_VERSION = 1;

public TextDatabaseHelper(Context context) {
super(context, "test.db", null, CURRENT_DATABASE_VERSION);
}

// onCreate 初回のみ実行される。テーブルの作成、初期データの登録する
@Override
public void onCreate(SQLiteDatabase db) {
try {
// テーブル作成
String createTable = "CREATE TABLE test_table ("
+ BaseColumns._ID + " INTEGER PRIMARY KEY,"
+ name + " TEXT,"
+ sex + " TEXT,"
+ age + " TEXT"
+ ");";
db.execSQL(createTable);

// データ登録
db.execSQL("insert into test_table(name,age) values (0, 'ホゲ タロウ', '男', '30');");
db.execSQL("insert into test_table(name,age) values (1, 'ホゲ ハナコ', '女', '28');");

} catch (Throwable th) {
th.printStackTrace();
}
}

// onUpgrade DBのバージョンを変えてDBを変更したいときに使用
@Override
public void onUpgrade(SQLiteDatabase db, int paramInt1, int paramInt2) {
}
}

簡単に使えるので、コメント以上に特に書く事はないですね。

今日はここまで!
ではでは、また来週(´・ω・)ノシ

Category: 開発日記(Java)

Thread: 日記

Janre: 日記

tb 0 : cm 0   

【Java】ちょっとしたデータの保存 

(」・ω・)こんにちは~
大坂です。

予想通りLockPickerがランキング外になりましたね(´・ω・`)

今週も小ネタ・・・初心者ネタで申し訳ないです。

DB(SQLite)に保存するにはデータ量が少ないけど、アプリをアンインストールされるまでデータを保存したい!
そんなときに使える「SharedPreferences」でデータを保存の方法についてです。
値の設定方法から。
 //HALCYONはファイル名と思ってください。MODE_PRIVATEについては後述
SharedPreferences sp = getSharedPreferences("HALCYON", MODE_PRIVATE);
// 書き込む様のエディタを生成
Editor edit = sp.edit();
// キー,値で設定(JavaのMapと同じ感じです)
edit.putString("HALCYON_KEY", "HALCYON_VALUE");
// 設定の保存
edit.commit();

getSharedPreferencesのモードについて
「MODE_PRIVATE」ファイルを作成したアプリケーションのみでアクセスが可能
「MODE_WORLD_READABLE」すべてのアプリケーションから読み込める
「MODE_WORLD_WRITEABLE」すべてのアプリケーションから書き込める
「MODE_MULTI_PROCESS」複数のプロセスをもつアプリケーションが、同じSharedPreferencesファイルに書き込み可能※API Level 11(Android 3.0)から

値の取得方法です。
  SharedPreferences sp = getSharedPreferences("HALCYON", MODE_PRIVATE);
上記で設定したキーで取得
 String halcyonStr = sp.getString("HALCYON_KEY");

これだけですね。
Editorのメソッドを見ればわかりますが、設定できる型は
「boolean」、「float」、「int」、「long」、「String」、「Set
ですね。この辺の型を使用してアプリケーション内で値の保存したい時はお手軽に使えるので便利です。

ではでは、また来週(´・ω・)ノシ

Category: 開発日記(Java)

Thread: 日記

Janre: 日記

tb 0 : cm 0   

【Java】画面にフィルターを設定する方法 

(」・ω・)こんにちは~
大坂です。

LockPickerがアンドロイドアプリ週間ランキング50(2013年9月30日~10月6日)で今週も34位にいました!
来週にはいなくなりそうですね(´・ω・`)

さて、今週の題材です。
覗き見防止なんかにも使えるかもしれない画面フィルターのお話です。

まずはフィルター用のxmlの準備。名前は「filter.xml」
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</LinearLayout>

ltImageViewを一つ用意するだけです。
続いてJavaのコード。常に画面にフィルターを設定し続けるのでサービスを使用します。
 // サービスを継承したクラス
public class FilterService extends Service {
// フィルター用のViewを準備
View view;
// View設定用のWindowManagerを準備
WindowManager wm;

@Override
public int onStartCommand(Intent intent,int flg, int startId) {
// Viewからインフレータを作成する
LayoutInflater layoutInflater = LayoutInflater.from(this);
// 重ね合わせするViewの設定を行う
WindowManager.LayoutParams params = new WindowManager.LayoutParams(
WindowManager.LayoutParams.MATCH_PARENT,
WindowManager.LayoutParams.MATCH_PARENT,
WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY, // オーバーレイレイヤーに設定する
WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH,
PixelFormat.TRANSLUCENT // ウィンドウの透明化
);

// WindowManagerを取得する
wm = (WindowManager) getSystemService(Context.WINDOW_SERVICE);

// レイアウトファイルから重ね合わせするViewを作成する
view = layoutInflater.inflate(R.layout.filter, null);
// 今回は黒色で透過率100でフィルターの色を指定。
// 覗き見防止の画像とか用意できればここでは画像を指定
view.setBackgroundColor(Color.argb(100, 0, 0, 0));
// Viewを画面上に重ね合わせする
wm.addView(view, params);
return START_NOT_STICKY;
}

@Override
public IBinder onBind(Intent arg0) {
// TODO 自動生成されたメソッド・スタブ
return null;
}
}

これでフィルター自体は設定完了ですが、
「WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY」を使用するには「AndroidManifest.xml」に以下のパーミッションの設定が必要です。
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />

そのほか注意点です
①重ねてほかの画像を設定する場合やサービス終了時にはWindowManagerにて「removeView(view)」を実行しないとどんどん重なってしまいます。
②「WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY」を使用するとapkから直接アプリをインストールできなくなる(インストールボタンが押せなくなる)ので、アプリとして公開する場合は注意書きやトーストを出して上げると親切ですかね。

今週はここまでです。
暑いのも明日でやっと終わるみたいですね。平日最後の暑い日なので帰りにビールでも飲みましょう~(ぇ
ではでは、また来週(´・ω・)ノシ

Category: 開発日記(Java)

Thread: 日記

Janre: 日記

tb 0 : cm 0   

【Java】テキストの一部分の色を変更する方法 

(」・ω・)こんにちは~
大坂です。

LockPickerがアンドロイドアプリ週間ランキング50(2013年9月23日~9月29日)で21位でした!
ダウンロードしてくださった方ありがとうございます!
ダウンロードされてない方もこれからでもダウンロードしてみてください!お願いします!!
ほかのアプリもよろしくお願いします!

さて今週もJavaについて少し。えぇ本当に少しです。
アプリを作っていて一部分の文字色を変えて強調したい場面など使えるコードです。

早速コードです。
  // テキストビューの生成
TextView textView = (TextView)findViewById(R.id.textView);
// 文字列の設定 文字色を変えたい文字のあいだをfontタグで囲って色をつける。
// ここではWorldを赤色に変更
String hello = " Hello <font size=2 color=#ff0000> World </font>";
// テキストビューに文字列を設定
// Htmlクラスの静的メソッド「fromHtml」を使えば、htmlを解釈してくれます
textView.setText(Html.fromHtml(hello));

これだけでしたのようにWorldが赤文字で表示されます。



本当に短いですが、今日はこれだけです。
ネタがないなー・・・

ではでは、また来週(´・ω・)ノシ

Category: 開発日記(Java)

Thread: 日記

Janre: 日記

tb 0 : cm 0