2019年1月25日 星期五

[Android]_ch11.10_人臉識別元件1



[Android]_ch11.10_人臉識別元件1

package com.derek.ch32_facedetect;



import android.R.integer;

import android.app.Activity;

import android.graphics.Bitmap;

import android.graphics.BitmapFactory;

import android.media.FaceDetector;

import android.media.FaceDetector.Face;

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.ImageView;

import android.widget.TextView;





public class MainActivity extends Activity {

int pic[]={R.drawable.img1,R.drawable.img2,R.drawable.img3,R.drawable.img4,R.drawable.img5,R.drawable.img6};

    TextView tv;

    ImageView iv;

    Button btn;

    Bitmap bitmap;

    int i=0;

@Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

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

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

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

        bitmap=BitmapFactory.decodeResource(getResources(), pic[0]);

        faceDetect();

        btn.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

bitmap=BitmapFactory.decodeResource(getResources(), pic[(++i)%pic.length]);

faceDetect();

}

});

    }

public void faceDetect(){

Face Faces[]=new Face[pic.length];

Bitmap faceBitmap=bitmap.copy(Bitmap.Config.RGB_565, true);

FaceDetector detector=new FaceDetector(faceBitmap.getWidth(),faceBitmap.getHeight(), Faces.length);

int num=detector.findFaces(faceBitmap, Faces);

if(num>0){

tv.setText("發現"+num+"張人臉");

// for(int i=0;i<num;i++){

//

// }

}else{

tv.setText("抱歉...未發現人臉");

}

iv.setImageBitmap(bitmap);

}



}


[Android]_ch11.9_感應器元件整合



[Android]_ch11.9_感應器元件整合

package com.derek.ch30_sensor1;

import android.R.integer;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.graphics.Color;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.TextView;


public class MainActivity extends Activity {
TextView tv1;
SensorManager sensorManager;
SensorEventListener listener,listener1,listener2;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        tv1=(TextView)findViewById(R.id.textView1);
sensorManager=(SensorManager)getSystemService(SENSOR_SERVICE);
listener=new SensorEventListener() {
@Override
public void onSensorChanged(SensorEvent event) {
Sensor sensor=event.sensor;
StringBuilder sb=new StringBuilder("Sensor訊息如下:\n");
sb.append("Sensor名稱:"+sensor.getName()+"\n");
sb.append("Sensor類型:"+sensor.getType()+"\n");
sb.append("Sensor耗電:"+sensor.getPower()+"\n");
sb.append("X、Y、Z內容如下:\n");
float values[]=event.values;
for(int i=0;i<values.length;i++){
sb.append("values["+i+"]="+values[i]+"\n");
}
sb.append("X="+values[0]+"\n");
sb.append("Y="+values[1]+"\n");
sb.append("Z="+values[2]+"\n");
tv1.setText(sb);
}

@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
// TODO Auto-generated method stub

}
};
listener1=new SensorEventListener() {
@Override
public void onSensorChanged(SensorEvent event) {
Sensor sensor=event.sensor;
StringBuilder sb=new StringBuilder("Sensor訊息如下:\n");
sb.append("Sensor名稱:"+sensor.getName()+"\n");
sb.append("Sensor類型:"+sensor.getType()+"\n");
sb.append("Sensor耗電:"+sensor.getPower()+"\n");
float values[]=event.values;
sb.append("距離:"+values[0]+"\n");
if(values[0]<1.0)
sb.append("距離很近...");
else
sb.append("距離還很遠...");
tv1.setText(sb);
}

@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
// TODO Auto-generated method stub

}
};
listener2=new SensorEventListener() {
@Override
public void onSensorChanged(SensorEvent event) {
Sensor sensor=event.sensor;
StringBuilder sb=new StringBuilder("Sensor訊息如下:\n");
sb.append("Sensor名稱:"+sensor.getName()+"\n");
sb.append("Sensor類型:"+sensor.getType()+"\n");
sb.append("Sensor耗電:"+sensor.getPower()+"\n");
float values[]=event.values;
sb.append("照度:"+values[0]+"\n");
if(values[0]>3000)
sb.append("光線充足,不需開燈!");
else
sb.append("光線不足...注意眼睛!");
tv1.setText(sb);
}

@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
// TODO Auto-generated method stub

}
};
       
    }
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();

String items[]={"加速度感應器","距離感應器","亮度感應器"};
DialogInterface.OnClickListener OCL=new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
switch(which){
case 0:
sensorManager.registerListener(
listener,
sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),
sensorManager.SENSOR_DELAY_UI);
break;
case 1:
sensorManager.registerListener(
listener1,
sensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY),
sensorManager.SENSOR_DELAY_UI);
break;
case 2:
sensorManager.registerListener(
listener2,
sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT),
sensorManager.SENSOR_DELAY_UI);
break;
}

}
};
new AlertDialog.Builder(MainActivity.this)
.setTitle("選擇感應器")
.setIcon(R.drawable.ic_launcher)
.setItems(items, OCL)
.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
})
.setCancelable(false)
.show();

}
@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
sensorManager.unregisterListener(listener);
}

}

2019年1月23日 星期三

Android ch4 11 AutoCompleteTextView清單元件介紹



[Android]_ch4.11_AutoCompleteTextView清單元件介紹



package com.derek.ch13_autocompletetextview;



import android.app.Activity;

import android.content.res.Resources;

import android.os.Bundle;

import android.view.Menu;

import android.view.MenuItem;

import android.widget.ArrayAdapter;

import android.widget.AutoCompleteTextView;





public class MainActivity extends Activity {

AutoCompleteTextView ACT;

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        ACT=(AutoCompleteTextView)findViewById(R.id.autoCompleteTextView1);

        Resources resources=getResources();

        String course[]=resources.getStringArray(R.array.course);

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

        ACT.setAdapter(AA);

    }

}



<AutoCompleteTextView
        android:id="@+id/autoCompleteTextView1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:completionThreshold="1"
        android:singleLine="true"
        android:ems="10" >

        <requestFocus />
    </AutoCompleteTextView>


<string-array name="course">
        <item >Android</item>
        <item >Java</item>
        <item >Apple</item>
        <item >DreamWeaver</item>
        <item >Flash</item>
        <item >PhotoShop</item>
        <item >CCNA</item>
        <item >WORD</item>
        <item >EXCEL</item>
        <item >PowerPoint</item>
        <item >AI</item>
    </string-array>


<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:background="#FFFF77"
    android:textColor="#0000FF"
    android:textSize="24sp"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >
</TextView>

Android ch4 10 Spinner清單元件介紹2



[Android]_ch4.10_Spinner清單元件介紹2

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

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

    android:background="#FFFF77"

    android:textColor="#888800"

    android:textSize="24sp"

    android:layout_width="match_parent"

    android:layout_height="match_parent" >

</TextView>






[Android]_ch4.9_Spinner清單元件介紹1



[Android]_ch4.9_Spinner清單元件介紹1



package com.derek.ch12_spinner;



import android.R.anim;

import android.app.Activity;

import android.graphics.Color;

import android.os.Bundle;

import android.view.Menu;

import android.view.MenuItem;

import android.view.View;

import android.widget.AdapterView;

import android.widget.AdapterView.OnItemSelectedListener;

import android.widget.ArrayAdapter;

import android.widget.LinearLayout;

import android.widget.Spinner;

import android.widget.Toast;





public class MainActivity extends Activity {

Spinner sp1,sp2;

LinearLayout layout;

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        layout=(LinearLayout)findViewById(R.id.LinearLayout1);

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

        sp2=(Spinner)findViewById(R.id.spinner2);

        sp1.setOnItemSelectedListener(new OnItemSelectedListener() {



@Override

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

Toast.makeText(MainActivity.this, parent.getItemAtPosition(position).toString(), Toast.LENGTH_SHORT).show();

}



@Override

public void onNothingSelected(AdapterView<?> parent) {

// TODO Auto-generated method stub



}

});

        String color[]={"設定背景顏色","紅色","綠色","藍色","紫色"};

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

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

        sp2.setAdapter(AA);

        sp2.setOnItemSelectedListener(new OnItemSelectedListener() {

@Override

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

switch(position){

case 1:

layout.setBackgroundColor(Color.RED);

break;

case 2:

layout.setBackgroundColor(Color.GREEN);

break;

case 3:

layout.setBackgroundColor(Color.BLUE);

break;

case 4:

layout.setBackgroundColor(new Color().rgb(255, 0, 255));

break;

}



}



@Override

public void onNothingSelected(AdapterView<?> parent) {

// TODO Auto-generated method stub



}

});

    }



}


2019年1月21日 星期一

[Android]_ch4.8_日曆元件介紹



[Android]_ch4.8_日曆元件介紹

calendarView=(CalendarView)findViewById(R.id.calendarView1);

calendarView.setOnDateChangeListener(new OnDateChangeListener() {

@Override

public void onSelectedDayChange(CalendarView arg0, int y, int m,int d) {

tv1.setText("日期:"+y+"-"+m+"-"+d);

}

});

[Android]_ch4.7_時間挑選元件介紹



[Android]_ch4.7_時間挑選元件介紹



case 5:

return new TimePickerDialog(MainActivity.this, new TimePickerDialog.OnTimeSetListener() {



@Override

public void onTimeSet(TimePicker arg0, int arg1, int arg2) {

H=arg1;

min=arg2;

tv1.setText("挑選時間:"+H+":"+min);



}

}, H, min, false);

[Android]_ch4.6_複選訊息元件介紹



[Android]_ch4.6_複選訊息元件介紹

case 4:

final String data[]={"Android","Java","iOS","CCNA"};

final boolean checkedItems[]=new boolean[data.length];

return new AlertDialog.Builder(MainActivity.this)

.setTitle("課程清單")

.setIcon(R.drawable.ic_launcher)

.setMultiChoiceItems(data, checkedItems, new DialogInterface.OnMultiChoiceClickListener() {

@Override

public void onClick(DialogInterface arg0, int which, boolean ischecked) {

Toast.makeText(MainActivity.this, data[which]+(ischecked?"選取":"取消"), Toast.LENGTH_SHORT).show();

}

})

.setPositiveButton("確定", new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface arg0, int which) {

StringBuilder sb=new StringBuilder("選擇課程如下:\n");

for(int i=0;i<data.length;i++){

if(checkedItems[i]==true){

sb.append(data[i]+"\n");

}

}

tv1.setText(sb);

}

})

.setNegativeButton("取消", new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int arg1) {

dialog.cancel();

}

})

.setCancelable(false)

.show();

2019年1月19日 星期六

[Java]_ch11.3_階層類別庫設計



[Java]_ch11.3_階層類別庫設計

package Gjun.Taipei;

public class CCircle{

protected double pi=3.14;

protected double radius;

public CCircle(){

radius=1.0;

System.out.println("0.父類別建構元(),radius="+radius+" pi="+pi);

}

public CCircle(double r){

radius=r;

System.out.println("1.父類別建構元(double r),radius="+radius+" pi="+pi);

}

public final void show() {

System.out.println("父類別show(),radius="+radius+" pi="+pi);

}

}



package Gjun.Hsinchu;

import Gjun.Taipei.CCircle;

public class CCoin extends CCircle{

int value;

public CCoin(){

// super(1);

value=5;

System.out.println("0.子類別建構元(),radius="+radius+" pi="+pi+" value="+value);

}

public CCoin(double v){

super(v);

value=(int)v;

System.out.println("1.子類別建構元(double v),radius="+radius+" pi="+pi+" value="+value);

}

public void setValue(int v) {

value=v;

System.out.println("子類別setValue(int v),radius="+radius+" pi="+pi+" value="+value);

}

// void show() {

// System.out.println("子類別show(),radius="+radius+" pi="+pi+" value="+value);

// }

public String toString() {

String data="物件內容: radius="+radius+" pi="+pi+" value="+value;

return data;

}

}

package Gjun;
import Gjun.Taipei.CCircle;
import Gjun.Hsinchu.*;
//import Gjun.*;
public class A9 {

public static void main(String[] args) {
CCircle c1=new CCircle();
c1.show();
// c1.setValue(999);
CCoin c2=new CCoin();
c2.show();
c2.setValue(100);
CCircle c3=new CCoin(4.0);
c3.show();
// c3.setValue(50);
CCoin c4=(CCoin) c3;
}

}

[Java]_ch11.2_不同類別庫間存取



[Java]_ch11.2_不同類別庫間存取

package Taipei;

public class CCircle{

protected double pi=3.14;

protected double radius;

public CCircle(){

radius=1.0;

System.out.println("0.父類別建構元(),radius="+radius+" pi="+pi);

}

public CCircle(double r){

radius=r;

System.out.println("1.父類別建構元(double r),radius="+radius+" pi="+pi);

}

public final void show() {

System.out.println("父類別show(),radius="+radius+" pi="+pi);

}

}





package Hsinchu;

public class CCoin extends Taipei.CCircle{

int value;

public CCoin(){

// super(1);

value=5;

System.out.println("0.子類別建構元(),radius="+radius+" pi="+pi+" value="+value);

}

public CCoin(double v){

super(v);

value=(int)v;

System.out.println("1.子類別建構元(double v),radius="+radius+" pi="+pi+" value="+value);

}

public void setValue(int v) {

value=v;

System.out.println("子類別setValue(int v),radius="+radius+" pi="+pi+" value="+value);

}

// void show() {

// System.out.println("子類別show(),radius="+radius+" pi="+pi+" value="+value);

// }

public String toString() {

String data="物件內容: radius="+radius+" pi="+pi+" value="+value;

return data;

}

}



package Gjun;
public class A9 {

public static void main(String[] args) {
Taipei.CCircle c1=new Taipei.CCircle();
c1.show();
// c1.setValue(999);
Hsinchu.CCoin c2=new Hsinchu.CCoin();
c2.show();
c2.setValue(100);
Taipei.CCircle c3=new Hsinchu.CCoin(4.0);
c3.show();
// c3.setValue(50);
Hsinchu.CCoin c4=(Hsinchu.CCoin) c3;
System.out.println("c1.getClass()="+c1.getClass());
System.out.println("c2.getClass()="+c2.getClass());
System.out.println("c3.getClass()="+c3.getClass());
System.out.println(c3.equals(c4)?"同一物件":"不同物件");
System.out.println(c3.equals(c1)?"同一物件":"不同物件");
System.out.println("c3.toString()="+c3.toString());
System.out.println("c1.toString()="+c1.toString());
System.out.println("c2.toString()="+c2.toString());
}

}

[Android]_ch11.8_FragmentDual元件2



[Android]_ch11.8_FragmentDual元件2



package com.derek.ch30_fragmentdual;

import android.app.Activity;

import android.app.FragmentManager;

import android.app.FragmentTransaction;

import android.content.Intent;

import android.os.Bundle;





public class DetailActivity extends Activity{



@Override

protected void onCreate(Bundle savedInstanceState) {

// TODO Auto-generated method stub

super.onCreate(savedInstanceState);

Intent intent=getIntent();

Bundle bundle=intent.getExtras();

int position=bundle.getInt("position");

FragmentManager fm=getFragmentManager();

FragmentTransaction ft=fm.beginTransaction();

DetailFragment detailFragment=new DetailFragment(position);

ft.add(android.R.id.content, detailFragment);

ft.commit();

}

}



package com.derek.ch30_fragmentdual;

import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;

public class DetailFragment extends Fragment{
int position;
TextView tv1,tv2;
ImageView iv;
public DetailFragment(int position){
this.position=position;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view=inflater.inflate(R.layout.detail_fragment, container,false);
tv1=(TextView)view.findViewById(R.id.textView1);
tv2=(TextView)view.findViewById(R.id.textView2);
iv=(ImageView)view.findViewById(R.id.imageView1);
iv.setImageResource(Resot.PARKS[position].getImageId());
tv1.setText(Resot.PARKS[position].getName());
tv2.setText(Resot.PARKS[position].getDescription());
return view;
}

}

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