2019年2月28日 星期四

[Java基礎程式設計]ch5.5_[猜數字遊戲1~10]





[Java基礎程式設計]ch5.5_[猜數字遊戲1~10]

import java.io.*;

public class Demo

{

    public static void main(String[] args) throws IOException {

InputStreamReader isr=new InputStreamReader(System.in);

BufferedReader br=new BufferedReader(isr);

int pc=(int)(Math.random()*10+1),usr;

System.out.println("pc="+pc);

do{

    if(pc>5)

        System.out.print("請輸入6~10: ");

    else

        System.out.print("請輸入1~5: ");

    String s1=br.readLine();

    usr=Integer.parseInt(s1);

    if(usr==pc)

                System.out.println("恭喜答對!");

            else

                System.out.println("抱歉答錯!");

}while(usr!=pc);

        System.out.println("遊戲結束...");

    }

}

2019年2月27日 星期三

[Android]_ch8.4_讀取外部資料庫





[Android]_ch8.4_讀取外部資料庫


public ArrayList<String> queryDB(Context context){
SQLiteDatabase db=context.openOrCreateDatabase("NCTU.db", Context.MODE_WORLD_WRITEABLE, null);
String args[]={"Taipei","Hsinchu"};
Cursor cursor=db.rawQuery("SELECT * FROM student WHERE address=?;", args);
ArrayList<String> list=new ArrayList<String>();
StringBuilder sb=new StringBuilder("查詢筆數:"+cursor.getCount()+"筆"+"\n欄位:"+cursor.getColumnCount()+"欄\n");
while(cursor.moveToNext()){
sb.append(cursor.getString(0)+"\t");
sb.append(cursor.getString(1)+"\t");
sb.append(cursor.getString(2)+"\t");
sb.append(cursor.getString(3)+"\n");
}
list.add(sb.toString());
return list;
}


btn4.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
ArrayList<String> list=dbhp.queryDB(MainActivity.this);
if(list.size()>0){
tv1.setText(list.get(0));
}else{
tv1.setText("查詢不到資料...");
}
}
});

[Android]_ch8.3_SQLite3資料庫語法介紹





[Android]_ch8.3_SQLite3資料庫語法介紹



C:\Gjun135>sqlite3 NCTU.db

SQLite version 3.8.6 2014-08-15 11:46:33

Enter ".help" for usage hints.

sqlite> CREATE TABLE student (id TEXT,name TEXT,phoneNO TEXT,addres

sqlite> .table

student

sqlite> .schema

CREATE TABLE student (id TEXT,name TEXT,phoneNO TEXT,address TEXT);

sqlite> INSERT INTO student VALUES('1','Derek','0912345678','Taipei

sqlite> INSERT INTO student VALUES('2','Merry','0912345678','Hsinch

sqlite> INSERT INTO student VALUES('3','Jerry','0912345678','Hsinch

sqlite> INSERT INTO student VALUES('4','Tom','0912345678','Taipei')

sqlite> INSERT INTO student VALUES('5','Vicky','0912345678','Taipei

sqlite> SELECT * FROM student;

1|Derek|0912345678|Taipei

2|Merry|0912345678|Hsinchu

3|Jerry|0912345678|Hsinchu

4|Tom|0912345678|Taipei

5|Vicky|0912345678|Taipei

sqlite> SELECT name,address FROM student;

Derek|Taipei

Merry|Hsinchu

Jerry|Hsinchu

Tom|Taipei

Vicky|Taipei

sqlite> SELECT name,address FROM student WHERE address='Taipei';

Derek|Taipei

Tom|Taipei

Vicky|Taipei

2019年2月25日 星期一

[Android]_ch8.2_SQLite資料庫查詢





[Android]_ch8.2_SQLite資料庫查詢



public ArrayList<String> queryDB(){

SQLiteDatabase db=getWritableDatabase();

Cursor cursor=db.rawQuery("SELECT * FROM teacher;", null);

ArrayList<String> list=new ArrayList<String>();

while(cursor.moveToNext()){

String msg="";

for (int i = 0; i < cursor.getColumnCount(); i++) {

msg=msg+cursor.getString(i)+"\t";

}

list.add(msg);

}

return list;

}



btn2.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

ArrayList<String> list=dbhp.queryDB();

StringBuilder sb=new StringBuilder("查詢結果"+list.size()+"筆如下:\n");

if(list.size()>0){

for(int i=0;i<list.size();i++){

sb.append(list.get(i)+"\n");

}

}else{

sb.append("查詢不到資料...");

}

tv1.setText(sb);

}

});

[Android]_ch8.1_SQLite資料庫建置



[Android]_ch8.1_SQLite資料庫建置



1. DBHP.java

package com.derek.ch24_sqlitedb;



import android.content.Context;

import android.database.sqlite.SQLiteDatabase;

import android.database.sqlite.SQLiteOpenHelper;



public class DBHP extends SQLiteOpenHelper{

public DBHP(Context context){

super(context, "Gjun", null, 1);

}



@Override

public void onCreate(SQLiteDatabase db) {

db.execSQL("CREATE TABLE teacher(id TEXT,name TEXT,phoneNo TEXT,address TEXT);");

}



@Override

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

db.execSQL("DROP TABLE IF EXISTS teacher");

onCreate(db);

}



public void insertDB(){

SQLiteDatabase db=getWritableDatabase();

db.execSQL("INSERT INTO teacher VALUES('1','杜仲','0912-345678','新竹');");

db.execSQL("INSERT INTO teacher VALUES('2','張三','0912-345678','台北');");

db.execSQL("INSERT INTO teacher VALUES('3','李四','0912-345678','台中');");

db.execSQL("INSERT INTO teacher VALUES('4','王五','0912-345678','新竹');");

db.execSQL("INSERT INTO teacher VALUES('5','陳二','0912-345678','台南');");

}

}



2.MainActivity.java
package com.derek.ch24_sqlitedb;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;


public class MainActivity extends Activity {
TextView tv1;
Button btn1,btn2,btn3;
DBHP dbhp;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        btn1=(Button)findViewById(R.id.button1);
        btn2=(Button)findViewById(R.id.button2);
        btn3=(Button)findViewById(R.id.button3);
        tv1=(TextView)findViewById(R.id.textView1);
        if(dbhp==null)
        dbhp=new DBHP(MainActivity.this);
        else
        Toast.makeText(MainActivity.this, "資料庫已存在", Toast.LENGTH_SHORT).show();
        
        btn1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
dbhp.insertDB();
tv1.setText("新增資料完成!");
Toast.makeText(MainActivity.this, "新增資料完成!", Toast.LENGTH_SHORT).show();
}
});
        btn2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
}
});
        btn3.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
tv1.setText("");
}
});        
    }
}

2019年2月22日 星期五

[Android]_ch7.5_存取行動裝置外部儲存媒體(私有區)



[Android]_ch7.5_存取行動裝置外部儲存媒體(私有區)



package com.derek.ch23_externalstorage;



import java.io.File;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStream;



import android.R.integer;

import android.app.Activity;

import android.content.Context;

import android.content.res.Resources;

import android.media.MediaScannerConnection;

import android.net.Uri;

import android.os.Bundle;

import android.os.Environment;

import android.util.Log;

import android.view.Menu;

import android.view.MenuItem;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

import android.widget.ImageView;

import android.widget.TextView;

import android.widget.Toast;





public class MainActivity extends Activity {

Button btn1,btn2;

TextView tv1;

ImageView iv;

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        iv=(ImageView)findViewById(R.id.imageView1);

        tv1=(TextView)findViewById(R.id.textView1);

        btn1=(Button)findViewById(R.id.button1);

        btn2=(Button)findViewById(R.id.button2);

        btn1.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

File path=Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM);// /storage/sdcard/DCIM

File file=new File(path,"derek.jpg");  // /storage/sdcard/DCIM/derek.jpg

saveImage(file);

}

});

        btn2.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

File path=getExternalFilesDir(Environment.DIRECTORY_PICTURES);

File file=new File(path,"derek.jpg");  // /storage/sdcard/DCIM/derek.jpg

saveImage(file);

}

});

    }

    public void MediaScan(String paths[]){

    MediaScannerConnection.scanFile(MainActivity.this, paths, null, new MediaScannerConnection.OnScanCompletedListener() {

@Override

public void onScanCompleted(String path, Uri uri) {

Log.v("MediaScanner", "path="+path+" uri="+uri);

}

});

    }

    public void saveImage(File file){

    File path=file.getParentFile();

    if(!isSDCARDExit())

Toast.makeText(MainActivity.this, "SD CARD未裝置!", Toast.LENGTH_SHORT).show();

if(!path.exists())

path.mkdirs();

if(file.exists())

file.delete();

Resources resources=getResources();

InputStream is=resources.openRawResource(R.drawable.a16);

try {

int num=is.available();

byte data[]=new byte[num];

FileOutputStream fos=new FileOutputStream(file);

is.read(data);

fos.write(data);

is.close();

fos.close();

Toast.makeText(MainActivity.this, "1.公有區寫入成功", Toast.LENGTH_SHORT).show();

tv1.setText("檔案大小:"+num+"位元組\n檔案位置:"+file.toString());

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

String paths[]={file.toString()};

MediaScan(paths);

    }

    public boolean isSDCARDExit(){

    String state=Environment.getExternalStorageState();

    if(state.equals(Environment.MEDIA_MOUNTED))

    return true;

    else

    return false;

    }



}


[Android]_ch7.7_ExternalStorage(公有區)



[Android]_ch7.7_ExternalStorage(公有區)



package com.derek.ch23_externalstorage;



import java.io.File;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStream;



import android.R.integer;

import android.app.Activity;

import android.content.Context;

import android.content.res.Resources;

import android.os.Bundle;

import android.os.Environment;

import android.view.Menu;

import android.view.MenuItem;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

import android.widget.ImageView;

import android.widget.TextView;

import android.widget.Toast;





public class MainActivity extends Activity {

Button btn1;

TextView tv1;

ImageView iv;

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        iv=(ImageView)findViewById(R.id.imageView1);

        tv1=(TextView)findViewById(R.id.textView1);

        btn1=(Button)findViewById(R.id.button1);

        btn1.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

File path=Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM);// /storage/sdcard/DCIM

File file=new File(path,"derek.jpg");  // /storage/sdcard/DCIM/derek.jpg



if(!isSDCARDExit())

Toast.makeText(MainActivity.this, "SD CARD未裝置!", Toast.LENGTH_SHORT).show();

if(!path.exists())

path.mkdirs();

if(file.exists())

file.delete();

Resources resources=getResources();

InputStream is=resources.openRawResource(R.drawable.a16);

try {

int num=is.available();

byte data[]=new byte[num];

FileOutputStream fos=new FileOutputStream(file);

is.read(data);

fos.write(data);

is.close();

fos.close();

Toast.makeText(MainActivity.this, "1.公有區寫入成功", Toast.LENGTH_SHORT).show();

tv1.setText("檔案大小:"+num+"位元組\n檔案位置:"+file.toString());

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

});

    }

    public boolean isSDCARDExit(){

    String state=Environment.getExternalStorageState();

    if(state.equals(Environment.MEDIA_MOUNTED))

    return true;

    else

    return false;

    }



}


2019年2月20日 星期三

[Android]_ch7.6_存取res目錄內的資源



[Android]_ch7.6_存取res目錄內的資源



存取res目錄內的資源基本上都必須透過該資源的resource
ID,說明如下:
存取文字檔:透過R.string
存取圖形檔:透過R.drawable
存取多媒體檔:透過R.raw
存取layout檔:透過R.layout



Resources resources=getResources();

        CharSequence s1=resources.getText(R.string.s2);

        String s2=resources.getString(R.string.s2);

        tv4.setText(s1);

        tv5.setText(s2);

        Drawable drawable=resources.getDrawable(R.drawable.a11);

        iv.setImageDrawable(drawable);

        MediaPlayer mediaPlayer=MediaPlayer.create(MainActivity.this, R.raw.lee); 

        mediaPlayer.start();



<?xml version="1.0" encoding="utf-8"?>

<resources>   

    <string name="s1">杜仲教學,Adorid手機程式,2019年</string>

    <string name="s2"><B>杜仲教學</B>,<i>Adorid手機程式</i>,<U>2019年</U></string>

</resources>




[Android]_ch7.2_internal storage:存取行動裝置的記憶體。



[Android]_ch7.2_internal storage:存取行動裝置的記憶體。



可以將檔案儲存在行動裝置的記憶體內,這種方式稱為內部儲存,說明如下
呼叫ContextopenFileOutput()可以輸出資料
呼叫FileOutputStreamwrite()資料寫入檔案
呼叫FileOutputStreamclose()關閉寫入檔案的資料串
呼叫ContextopenFileInput()可以讀取資料
呼叫FileInputStreamread()讀入檔案資料
呼叫FileInputStreamclose()關閉讀取檔案的資料串流



package com.derek.ch22_internalstorage;



import java.io.BufferedReader;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStreamReader;



import android.app.Activity;

import android.content.Context;

import android.os.Bundle;

import android.view.Menu;

import android.view.MenuItem;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

import android.widget.EditText;

import android.widget.RadioButton;

import android.widget.TextView;

import android.widget.Toast;





public class MainActivity extends Activity {

TextView tv4;

Button btn1,btn2,btn3;

EditText et1,et2;

RadioButton rb1,rb2;

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        et1=(EditText)findViewById(R.id.editText1);

        et2=(EditText)findViewById(R.id.editText2);

        rb1=(RadioButton)findViewById(R.id.radioButton1);

        rb2=(RadioButton)findViewById(R.id.radioButton2);

        btn1=(Button)findViewById(R.id.button1);

        btn2=(Button)findViewById(R.id.button2);

        btn3=(Button)findViewById(R.id.button3);

        tv4=(TextView)findViewById(R.id.textView4);

        btn1.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

String name=et1.getText().toString();

boolean sex=(rb1.isChecked())?true:false;

int phone=Integer.parseInt(et2.getText().toString());

FileOutputStream fos = null;

try {

fos=openFileOutput("Derek.txt",MODE_PRIVATE);

fos.write(name.getBytes());

fos.write(Boolean.toString(sex).getBytes());

fos.write(Integer.toString(phone).getBytes());

fos.close();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

Toast.makeText(MainActivity.this, "1.存檔成功!位置:"+fos.toString(), Toast.LENGTH_SHORT).show();

}

});

        btn2.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

String name=et1.getText().toString();

boolean sex=(rb1.isChecked())?true:false;

int phone=Integer.parseInt(et2.getText().toString());

FileOutputStream fos = null;

try {

fos=openFileOutput("Derek.txt",MODE_APPEND);

fos.write((name+"\n").getBytes());

fos.write((Boolean.toString(sex)+"\n").getBytes());

fos.write((Integer.toString(phone)+"\n").getBytes());

fos.close();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

Toast.makeText(MainActivity.this, "2.附加寫入!", Toast.LENGTH_SHORT).show();

}

});

        btn3.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {



try {

FileInputStream fis=openFileInput("Derek.txt");

InputStreamReader isr=new InputStreamReader(fis);

BufferedReader br=new BufferedReader(isr);

StringBuilder sb=new StringBuilder("讀取內容如下:\n");

String msg="";

while((msg=br.readLine())!=null){

sb.append(msg+"\n");

}

br.close();

isr.close();

fis.close();

tv4.setText(sb);

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

Toast.makeText(MainActivity.this, "3.讀取完畢!", Toast.LENGTH_SHORT).show();

}

});

    }



}


2019年2月18日 星期一

[Android]_ch7.3_存取assets目錄內的資源



取得assets目錄內的檔案內容是透過較低階的IO方式,並使用AssetManager類別的功能

btn4.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
AssetManager AM=getAssets();
try {
InputStream is=AM.open("A2019.txt");
int num=is.available();
byte data[]=new byte[num];
is.read(data);
String string=new String(data);
tv4.setText("檔案大小:"+num+"位元組\n"+string);
is.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}
});

2019年2月15日 星期五

Android ch6 5 隱含意圖1



[Android]_ch6.5_隱含意圖1



package com.derek.ch20_implictintent;



import android.app.Activity;

import android.content.Intent;

import android.net.Uri;

import android.os.Bundle;

import android.view.Menu;

import android.view.MenuItem;

import android.view.View;

import android.widget.AdapterView;

import android.widget.ArrayAdapter;

import android.widget.AdapterView.OnItemSelectedListener;

import android.widget.Spinner;





public class MainActivity extends Activity {

Spinner sp1;

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        sp1=(Spinner)findViewById(R.id.spinner1);

        String items[]={"隱含意圖介紹","網頁查詢","播號面板","直接撥號","簡訊傳送","地圖定位"};

        ArrayAdapter<String> AA=new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_spinner_item, items);

        AA.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

        sp1.setAdapter(AA);

        sp1.setOnItemSelectedListener(new OnItemSelectedListener() {



@Override

public void onItemSelected(AdapterView<?> parent, View view,int position, long id) {

switch(position){

case 1:

Intent i1=new Intent(Intent.ACTION_VIEW,Uri.parse("http://www.104.com.tw"));

startActivity(i1);

break;

case 2:

Intent i2=new Intent(Intent.ACTION_DIAL,Uri.parse("tel:0912345678"));

startActivity(i2);

break;

case 3:

Intent i3=new Intent(Intent.ACTION_CALL,Uri.parse("tel:0912345678"));

startActivity(i3);

break;

case 4:

Intent i4=new Intent(Intent.ACTION_SENDTO,Uri.parse("smsto:0912345678"));

i4.putExtra("sms_body", "今晚東北季風又來了!");

startActivity(i4);

break;

case 5:

Intent i5=new Intent(Intent.ACTION_VIEW,Uri.parse("geo:24.801597559005653,120.97159624099731"));

startActivity(i5);

break;

}

}



@Override

public void onNothingSelected(AdapterView<?> parent) {

// TODO Auto-generated method stub



}

});

    }





}


2019年2月13日 星期三

[Android]_ch6.4_活動的外觀與方向設定



[Android]_ch6.4_活動的外觀與方向設定




樣式名稱

說明

Theme.NoTitleBar

活動視窗沒有標題列

Theme.NoTitleBar.Fullscreen

活動視窗全螢幕顯示

Theme.Dialog

讓活動視窗看起來像對話方塊

Theme.Wallpaper

在活動視窗套用使用者選擇的桌布,需要API層級6之上才支援


<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

    package="com.derek.ch19__bundle"

    android:versionCode="1"

    android:versionName="1.0" >



    <uses-sdk

        android:minSdkVersion="14"

        android:targetSdkVersion="19" />



    <application

        android:allowBackup="true"

        android:icon="@drawable/ic_launcher"

        android:label="@string/app_name"

        android:theme="@style/AppTheme" >

        <activity

            android:name=".Act01"

            android:label="@string/app_name" >

            <intent-filter>

                <action android:name="android.intent.action.MAIN" />



                <category android:name="android.intent.category.LAUNCHER" />

            </intent-filter>

        </activity>

        <activity android:name="Act02" android:theme="@android:style/Theme.NoTitleBar"></activity>

        <activity android:name="Act03"  android:theme="@android:style/Theme.Dialog"></activity>

    </application>



</manifest>



btn3.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}
});
        btn4.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
});

Ether.fi Cash Card 一張所有人必備的加密貨幣信用卡   [Ether.fi Cash Card] : https://www.ether.fi/app/cash/sign-up?ref_code=d27f8523 ------國際交易所------ [Bitg...