FeedBurner網址: http://feedburner.google.com
用途: 讓你的RSS具有更多功能
影音說明: http://www.youtube.com/watch?v=m6eiuPMk5Ug
步驟一
至:「http://feedburner.google.com/fb/a/switchlang?forward=http%3A%2F%2Ffeedburner.google.com%2Ffb%2Fa%2Fmyfeeds&locale=zh_tw」
步驟二
步驟三
獲得個人專屬RSS,例如
「http://feeds.feedburner.com/pixnet/lin-knowledge」
步驟四
以Pixnet為例
新增版位 後 寫入語法
步驟五
語法觀念:
步驟六
完成
2012年4月27日 星期五
2012年4月20日 星期五
利用google webmasters來查看流量
利用google網路工具-google webmasters
得知google處理你網站的狀況
並了解網站、部落格的文章、內容流量的吸引程度
和得知整個網站流量的紀錄
未來對於搜尋引擎的行銷的觀念,可說是基礎的學習工具之一
可利用其中 google Sitemap的工具,去進行網站或blog地圖提交的動作
讓google可以更順利的抓取你網站的內容
主動的提交你網站的地圖供google爬取,比呆呆的等google來抓取你的網站還要有效率
得知google處理你網站的狀況
並了解網站、部落格的文章、內容流量的吸引程度
和得知整個網站流量的紀錄
未來對於搜尋引擎的行銷的觀念,可說是基礎的學習工具之一
可利用其中 google Sitemap的工具,去進行網站或blog地圖提交的動作
讓google可以更順利的抓取你網站的內容
主動的提交你網站的地圖供google爬取,比呆呆的等google來抓取你的網站還要有效率
學習使用google analytics
利用google analytics來幫助你觀看網路流量
對於偵測搜尋引擎的抓取與使用人數的造訪提供一個信任的工具
網路上有許多介紹關於google analytics的介紹
不妨有興趣的朋友可以去google一下,相信有很多資訊可以供參考
google analytics簡單畫面呈現如下:
從造訪量、人數訪問上我們可以先進行簡單的了解,並且得知你部落格或相關網頁的一些流量
以作為未來調整網站架設、blog寫作相關方向
不妨學習一下google analytics操作工具!
對於偵測搜尋引擎的抓取與使用人數的造訪提供一個信任的工具
網路上有許多介紹關於google analytics的介紹
不妨有興趣的朋友可以去google一下,相信有很多資訊可以供參考
google analytics簡單畫面呈現如下:
從造訪量、人數訪問上我們可以先進行簡單的了解,並且得知你部落格或相關網頁的一些流量
以作為未來調整網站架設、blog寫作相關方向
不妨學習一下google analytics操作工具!
2012年4月18日 星期三
android範列程式-密碼認證清除按鈕
學習重點:
(1)利用button清除字串的方式
(2)
可以自動抓取該java程式名稱,而不用自動寫入該程式名稱
程式範列如下:
(1)利用button清除字串的方式
(2)
Toast toast=Toast.makeText(ATMToast1Activity.this, "提示文字內容", Toast.LENGTH_LONG);效果等同
Toast toast=Toast.makeText(getApplicationContext(), "提示文字內容", Toast.LENGTH_LONG);利用getApplicationContext()
可以自動抓取該java程式名稱,而不用自動寫入該程式名稱
程式範列如下:
package ATMToast1.com;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class ATMToast1Activity extends Activity {
//建立全域變數
private EditText edtATM;
private Button btnN1, btnN2, btnN3, btnBack;
private Button btnN4, btnN5, btnN6, btnOK;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//取得介面元件
edtATM=(EditText)findViewById(R.id.edtATM);
btnN1=(Button)findViewById(R.id.btnN1);
btnN2=(Button)findViewById(R.id.btnN2);
btnN3=(Button)findViewById(R.id.btnN3);
btnN4=(Button)findViewById(R.id.btnN4);
btnN5=(Button)findViewById(R.id.btnN5);
btnN6=(Button)findViewById(R.id.btnN6);
btnBack=(Button)findViewById(R.id.btnBack);
btnOK=(Button)findViewById(R.id.btnOK);
//設定共用事件
btnN1.setOnClickListener(listener);
btnN2.setOnClickListener(listener);
btnN3.setOnClickListener(listener);
btnN4.setOnClickListener(listener);
btnN5.setOnClickListener(listener);
btnN6.setOnClickListener(listener);
btnBack.setOnClickListener(listener);
btnOK.setOnClickListener(listener);
}
private Button.OnClickListener listener=new Button.OnClickListener() {
@Override
public void onClick(View v) {
switch(v.getId())
{
case R.id.btnN1: //按 1 鈕
displayATM("1");
break;
case R.id.btnN2: //按 2 鈕
displayATM("2");
break;
case R.id.btnN3: //按 3 鈕
displayATM("3");
break;
case R.id.btnN4: //按 4 鈕
displayATM("4");
break;
case R.id.btnN5: //按 5 鈕
displayATM("5");
break;
case R.id.btnN6: //按 6 鈕
displayATM("6");
break;
case R.id.btnBack: //按 清除 鈕
String str=edtATM.getText().toString();
if(str.length()>0) {
str=str.substring(0, str.length()-1);
edtATM.setText(str);
}
break;
case R.id.btnOK: //按 確定 鈕
str=edtATM.getText().toString();
if(str.equals("123456")) {
Toast toast=Toast.makeText(ATMToast1Activity.this, "密碼正確,歡迎使用提款功能!", Toast.LENGTH_LONG);
toast.show();
} else {
Toast toast=Toast.makeText(getApplicationContext(), "密碼錯誤,請重新輸入。", Toast.LENGTH_LONG);
toast.show();
edtATM.setText("");
}
break;
}
}
};
private void displayATM(String s) {
String str=edtATM.getText().toString();
edtATM.setText(str + s);
}
}
android範列程式-數字按鈕事件
學習重點:
(1)利用TableLayout進行版面配置,優點是簡潔有序。
(2)android:layout_span進行main.xml排版跨欄方式。
TableLayout版面配置
畫面呈現結果
額外補充版面排置方式(1)
額外補充版面排置方式(2)
(1)利用TableLayout進行版面配置,優點是簡潔有序。
(2)android:layout_span進行main.xml排版跨欄方式。
TableLayout版面配置
畫面呈現結果
package ATMInput.com;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
public class ATMInputActivity extends Activity {
//建立全域變數
private EditText edtATM;
private Button btnN1, btnN2, btnN3;
private Button btnN4, btnN5, btnN6;
private Button btnN7, btnN8, btnN9;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//取得介面元件
edtATM=(EditText)findViewById(R.id.edtATM);
btnN1=(Button)findViewById(R.id.btnN1);
btnN2=(Button)findViewById(R.id.btnN2);
btnN3=(Button)findViewById(R.id.btnN3);
btnN4=(Button)findViewById(R.id.btnN4);
btnN5=(Button)findViewById(R.id.btnN5);
btnN6=(Button)findViewById(R.id.btnN6);
btnN7=(Button)findViewById(R.id.btnN7);
btnN8=(Button)findViewById(R.id.btnN8);
btnN9=(Button)findViewById(R.id.btnN9);
//設定共用事件
btnN1.setOnClickListener(listener);
btnN2.setOnClickListener(listener);
btnN3.setOnClickListener(listener);
btnN4.setOnClickListener(listener);
btnN5.setOnClickListener(listener);
btnN6.setOnClickListener(listener);
btnN7.setOnClickListener(listener);
btnN8.setOnClickListener(listener);
btnN9.setOnClickListener(listener);
}
private Button.OnClickListener listener=new Button.OnClickListener() {
@Override
public void onClick(View v) {
switch(v.getId())
{
case R.id.btnN1: //按 1 鈕
displayATM("1");
break;
case R.id.btnN2: //按 2 鈕
displayATM("2");
break;
case R.id.btnN3: //按 3 鈕
displayATM("3");
break;
case R.id.btnN4: //按 4 鈕
displayATM("4");
break;
case R.id.btnN5: //按 5 鈕
displayATM("5");
break;
case R.id.btnN6: //按 6 鈕
displayATM("6");
break;
case R.id.btnN7: //按 7 鈕
displayATM("7");
break;
case R.id.btnN8: //按 8 鈕
displayATM("8");
break;
case R.id.btnN9: //按 9 鈕
displayATM("9");
break;
}
}
};
private void displayATM(String s) {
String str=edtATM.getText().toString();
edtATM.setText(str + s);
}
}
額外補充版面排置方式(1)
額外補充版面排置方式(2)
android範列程式-共用相同的「監聽事件」的使用
學習重點:
(1)設定 button 元件 Click 事件共用相同的「監聽事件」
(2)在相同的共用監聽事件下,利用switch...case break;進行判斷
(1)設定 button 元件 Click 事件共用相同的「監聽事件」
(2)在相同的共用監聽事件下,利用switch...case break;進行判斷
package MultiButton.com;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class MultiButtonActivity extends Activity {
// 宣告全域變數
private TextView txtShow;
private Button btnZero,btnOne,btnTwo;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// 取得資源類別檔中的介面元件
txtShow=(TextView)findViewById(R.id.txtShow);
btnZero=(Button)findViewById(R.id.btnZero);
btnOne=(Button)findViewById(R.id.btnOne);
btnTwo=(Button)findViewById(R.id.btnTwo);
// 設定 button 元件 Click 事件共用 myListner
btnZero.setOnClickListener(myListner);
btnOne.setOnClickListener(myListner);
btnTwo.setOnClickListener(myListner);
}
// 定義 onClick() 方法
private Button.OnClickListener myListner=new Button.OnClickListener(){
@Override
public void onClick(View v) {
String s=txtShow.getText().toString();
switch (v.getId())
{
case R.id.btnZero:
{
txtShow.setText(s + "0");
break;
}
case R.id.btnOne:
{
txtShow.setText(s + "1");
break;
}
case R.id.btnTwo:
{
txtShow.setText(s + "2");
break;
}
}
}
};
}
android範列程式-英哩與時速計算
學習重點:
(1)btnTranListener的利用,多重監聽事件使用
(2)資料型態改變int和Integer轉換
執行畫面
程式簡述
1.表示btnTranListener()寫法相同,直接代入
2.private Button.OnClickListener XXXX = new Button.OnClickListener(), 快速記憶方式
3.利用.parseInt將資料型態轉換成整數
原始碼如下:
(1)btnTranListener的利用,多重監聽事件使用
(2)資料型態改變int和Integer轉換
執行畫面
程式簡述
1.表示btnTranListener()寫法相同,直接代入
2.private Button.OnClickListener XXXX = new Button.OnClickListener(), 快速記憶方式
3.利用.parseInt將資料型態轉換成整數
原始碼如下:
package MileToKm.com;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class MileToKmActivity extends Activity {
// 宣告全域變數
private EditText edtMile;
private TextView txtKm;
private Button btnTran;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// 取得資源類別 R 中的介面元件 id
edtMile=(EditText)findViewById(R.id.edtMile);
txtKm=(TextView)findViewById(R.id.txtKm);
btnTran=(Button)findViewById(R.id.btnTran);
// 設定 button 元件 Click 事件的 listener 為 btnTranListener
btnTran.setOnClickListener(btnTranListener);
}
// 定義 onClick() 方法
private Button.OnClickListener btnTranListener=new Button.OnClickListener(){
public void onClick(View v){
int miles=Integer.parseInt(edtMile.getText().toString());
double km=1.61*(double)miles;
txtKm.setText("時速= " + km + " 公里");
}
};
}
2012年4月12日 星期四
Android-TQC107驗證Activity
學習重點
(1)了解activity生命週期
(2)log.i的使用方式
log.i的使用
AndroidManifest.xml的設定
題目要求結果
程式碼參考如下:
(1)了解activity生命週期
(2)log.i的使用方式
log.i的使用
AndroidManifest.xml的設定
題目要求結果
程式碼參考如下:
package COM.TQC.GDD01;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class GDD01 extends Activity {
private static final String TAG = "Android_Log";
private TextView tv;
private Button b1;
private Button b2;
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
tv=(TextView) findViewById(R.id.text1);;
b1 = (Button) findViewById(R.id.button1);
b2 = (Button) findViewById(R.id.button2);
b1.setOnClickListener(new Button.OnClickListener(){
public void onClick(View v){
Intent intent = (Intent) new Intent().setClass(GDD01.this, GDD01_2.class);
startActivityForResult(intent,123);
}
});
b2.setOnClickListener(new Button.OnClickListener(){
public void onClick(View v){
GDD01.this.finish();
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
tv.setText("" + resultCode);
//System.out.println(requestCode + ":" + resultCode);
}
@Override
public void onStart(){
super.onStart();
Log.i(TAG,"onStart()");
}
@Override
public void onResume(){
super.onResume();
Log.i(TAG,"onResume()");
}
@Override
public void onPause(){
super.onPause();
Log.i(TAG,"onPause()");
}
@Override
public void onStop(){
super.onStop();
Log.i(TAG,"onStop()");
}
@Override
public void onRestart(){
super.onRestart();
Log.i(TAG,"onRestart()");
}
@Override
public void onDestroy(){
super.onDestroy();
Log.i(TAG,"onDestroy()");
}
}
2012年4月11日 星期三
Android-TQC109 AlertDialog顯示結果
學習重點:
(1)利用 button與AlertDialog結合利用
(1)利用 button與AlertDialog結合利用
package COM.TQC.GDD01;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.RadioButton;
public class GDD01 extends Activity {
private EditText et;
private RadioButton rb1;
private RadioButton rb2;
private CheckBox cb1;
private CheckBox cb2;
private CheckBox cb3;
private Button button;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
et = (EditText) findViewById(R.id.name);
rb1 = (RadioButton) findViewById(R.id.rButton1);
rb2 = (RadioButton) findViewById(R.id.rButton2);
cb1 = (CheckBox) findViewById(R.id.cBox1);
cb2 = (CheckBox) findViewById(R.id.cBox2);
cb3 = (CheckBox) findViewById(R.id.cBox3);
button = (Button) findViewById(R.id.button1);
button.setOnClickListener(new Button.OnClickListener(){
public void onClick(View v){
String s="";
String b ="";
if(!et.getText().toString().equals("")){
s += "姓名:"+et.getText().toString()+"\n";
}else{
s += "姓名:未填\n";
}
if(rb1.isChecked()){
s +="性別:"+rb1.getText().toString()+"\n";
}else{
s +="性別:"+rb2.getText().toString()+"\n";
}
if(cb1.isChecked()){
b +=cb1.getText().toString()+",";
}
if(cb2.isChecked()){
b +=cb3.getText().toString()+",";
}
if(cb3.isChecked()){
b +=cb2.getText().toString()+",";
}
if(!b.equals("")){
s += "興趣:" + b;
}else{
s += "興趣:未選擇";
}
new AlertDialog.Builder(GDD01.this)
.setTitle("結果")
.setMessage(s)
.setPositiveButton("離開", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface arg0, int arg1) {
// TODO Auto-generated method stub
}
})
.show();
}
});
}
}
android開發-利用button進行webserver資料存取-完整程式碼
以本機進行web方法畫面呈現
輸入http://localhost/Website/WebService.asmx
畫面執行步驟 程式範例
輸入http://localhost/Website/WebService.asmx
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Services; using System.Data; using System.Data.SqlClient; ////// WebService 的摘要描述 /// [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] // 若要允許使用 ASP.NET AJAX 從指令碼呼叫此 Web 服務,請取消註解下一行。 // [System.Web.Script.Services.ScriptService] public class WebService : System.Web.Services.WebService { private const string CONNECT = "Data Source=.\\SQLEXPRESS;AttachDbFilename=|DataDirectory|\\Database.mdf;Integrated Security=True;User Instance=True"; public WebService () { //如果使用設計的元件,請取消註解下行程式碼 //InitializeComponent(); } [WebMethod] public string HelloWorld() { return "Hello World"; } [WebMethod] public string HelloAndroid(string whoName) { string output; output = whoName + " 您好,這是Android Web Service"; return output; } [WebMethod] public string[] getMessage() { String[] output = null; output = new String[] { "早安", "Hello", "How are you?", "Ok", "7 見"}; return output; } [WebMethod] //取得資料紀錄 public string[] getRecord() { String[] output = null; //產生資料庫連線 SqlConnection conn = new SqlConnection(CONNECT); conn.Open(); //需要執行 SQL 指令 string sql = "Select msg_content, msg_now From Message Order by msg_id desc"; //產生指令物件 SqlCommand sqlcmd = new SqlCommand(sql, conn); SqlDataAdapter da = new SqlDataAdapter(); DataTable dt = new DataTable(); da.SelectCommand = sqlcmd; da.Fill(dt); //記錄筆數判斷 if (dt.Rows.Count > 0) { output = new String[dt.Rows.Count]; for (int i = 0; i < dt.Rows.Count; i++) { //讀取 msg_content output[i] = dt.Rows[i].ItemArray[0].ToString() + " "; //讀取 msg_now output[i] += dt.Rows[i].ItemArray[1].ToString(); } } da.Dispose(); dt.Dispose(); sqlcmd.Dispose(); conn.Close(); conn.Dispose(); return output; } [WebMethod] //進行資料存入動作 public int Insert(String msg_content) { SqlConnection conn = new SqlConnection(CONNECT); conn.Open(); SqlTransaction tran = conn.BeginTransaction(); string sql = "Insert into Message(msg_content,msg_now) values (@msg_content, @msg_now)"; SqlCommand sqlcmd = new SqlCommand(sql, conn, tran); sqlcmd.Parameters.Add("@msg_content", SqlDbType.Text).Value = msg_content; sqlcmd.Parameters.Add("@msg_now", SqlDbType.DateTime).Value = DateTime.Now; try { sqlcmd.ExecuteNonQuery(); tran.Commit(); } catch (Exception e) { tran.Rollback(); } sqlcmd.Dispose(); conn.Close(); conn.Dispose(); return 1; //回傳成功,呈現數字1 } }
畫面執行步驟 程式範例
package tw.edu.nfu;
import java.util.ArrayList;
import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapPrimitive;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE;
import android.app.Activity;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
public class TestActivity extends Activity {
/** Called when the activity is first created. */
private EditText input;
private TextView output;
private Button btn,insert;
private ListView dataList;
private static Handler handler;
private static Runnable right,right_message;
private static Runnable error,error_message;
private static String result;
private static String[] Msg = new String[]{"大家好","Hello","中午一起吃個飯如何","Ok", "7 見"};
private static ArrayList messageList;
private static String message;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
input=(EditText)findViewById(R.id.editText);
output=(TextView)findViewById(R.id.textView1);
dataList = (ListView)findViewById(R.id.listView1);
btn=(Button)findViewById(R.id.btn);
insert=(Button)findViewById(R.id.button1);
btn.setOnClickListener(new Button.OnClickListener(){
public void onClick(View arg0) {
// TODO Auto-generated method stub
final ProgressDialog mydialog=new ProgressDialog(TestActivity.this);
mydialog.setTitle("請稍後!");
mydialog.setMessage("執行中!");
mydialog.show();
//output.setText("測試~~~");
//output.setText(input.getText().toString());
System.out.println("1");
new Thread(){
public void run(){
int num;
int x = 10;
int y = 3;
try{
//num = x/y; //模擬伺服器處理結果
//System.out.println("2:" + num);
messageList = WebService.Welcome(input.getText().toString());
sleep(3000);
handler.post(right);
}catch(Exception a){
System.out.println("3");
handler.post(error);
a.printStackTrace();
}finally{
System.out.println("4");
mydialog.dismiss();
}
}
}.start();
handler = new Handler();
right = new Runnable()
{
public void run() {
// TODO Auto-generated method stub
System.out.println("6");
output.setText(result);
ArrayAdapter myAdp = new ArrayAdapter(TestActivity.this,android.R.layout.simple_list_item_1,messageList);
dataList.setAdapter(myAdp);
}
};
error = new Runnable()
{
public void run() {
// TODO Auto-generated method stub
System.out.println("7");
output.setText("執行失敗");
}
};
System.out.println("5");
}
});
insert.setOnClickListener(new Button.OnClickListener(){
public void onClick(View arg0) {
// TODO Auto-generated method stub
final ProgressDialog mydialog=new ProgressDialog(TestActivity.this);
mydialog.setTitle("請稍後!");
mydialog.setMessage("紀錄新增中...!");
mydialog.show();
//output.setText("測試~~~");
//output.setText(input.getText().toString());
System.out.println("1");
new Thread(){
public void run(){
int num;
int x = 10;
int y = 3;
try{
//num = x/y; //模擬伺服器處理結果
//System.out.println("2:" + num);
message = WebService.InsertMsg(input.getText().toString());
sleep(3000);
handler.post(right_message);
}catch(Exception a){
System.out.println("3");
handler.post(error_message);
a.printStackTrace();
}finally{
System.out.println("4");
mydialog.dismiss();
}
}
}.start();
handler = new Handler();
right_message = new Runnable()
{
public void run() {
// TODO Auto-generated method stub
Toast.makeText(TestActivity.this, message, Toast.LENGTH_LONG).show();
}
};
error_message = new Runnable()
{
public void run() {
// TODO Auto-generated method stub
}
};
System.out.println("5");
}
});
}
public static class WebService {
public static final String NAMESPACE = "http://tempuri.org/";
public static final String URL_PATH = "http://10.0.2.2/website/";
public static final String SERVICE_NAME = "WebService.asmx";
public static String InsertMsg(String personal){
//String method = "getMessage";
String method = "Insert";
String output = "";
ArrayList list = null;
try
{
SoapObject request = new SoapObject(NAMESPACE, method);
request.addProperty("msg_content", personal);
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet = true;
envelope.setOutputSoapObject(request);
HttpTransportSE androidHttpTransport = new HttpTransportSE(URL_PATH + SERVICE_NAME);
androidHttpTransport.call(NAMESPACE + method, envelope);
Object result = envelope.getResponse();
output = result.toString();
}catch(Exception e){}
System.gc();
return output;
}
public static ArrayList Welcome(String personal){
//String method = "getMessage";
String method = "getRecord";
String output = "";
ArrayList list = null;
try
{
SoapObject request = new SoapObject(NAMESPACE, method);
//request.addProperty("whoName", personal);
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet = true;
envelope.setOutputSoapObject(request);
HttpTransportSE androidHttpTransport = new HttpTransportSE(URL_PATH + SERVICE_NAME);
androidHttpTransport.call(NAMESPACE + method, envelope);
//Object result = envelope.getResponse();
SoapObject result = (SoapObject)((SoapObject)envelope.bodyIn).getProperty(0);
if(result != null && result.getPropertyCount()>0)
{
list = new ArrayList();
for(int i = 0; i < result.getPropertyCount(); i++)
{
SoapPrimitive msg_content = (SoapPrimitive)result.getProperty(i);
list.add(msg_content.toString());
}
}
}catch(Exception e){}
System.gc();
return list;
}
}
}
android開發-利用button進行webserver資料存取-簡單介紹
程式碼片段-website程式
[WebMethod]
public int Insert(String msg_content)
{
SqlConnection conn = new SqlConnection(CONNECT);
conn.Open();
SqlTransaction tran = conn.BeginTransaction();
string sql = "Insert into Message(msg_content,msg_now) values (@msg_content, @msg_now)";
SqlCommand sqlcmd = new SqlCommand(sql, conn, tran);
sqlcmd.Parameters.Add("@msg_content", SqlDbType.Text).Value = msg_content;
sqlcmd.Parameters.Add("@msg_now", SqlDbType.DateTime).Value = DateTime.Now;
try
{
sqlcmd.ExecuteNonQuery();
tran.Commit();
}
catch (Exception e)
{
tran.Rollback();
}
sqlcmd.Dispose();
conn.Close();
conn.Dispose();
return 1; //回傳成功,呈現數字1
}
程式碼畫面
以本機server測試,http://localhost/Website/WebService.asmx?op=Insert
android手機開發「讀取」button程式碼片段
insert=(Button)findViewById(R.id.button1);
insert.setOnClickListener(new Button.OnClickListener(){
public void onClick(View arg0) {
// TODO Auto-generated method stub
final ProgressDialog mydialog=new ProgressDialog(TestActivity.this);
mydialog.setTitle("請稍後!");
mydialog.setMessage("紀錄新增中...!");
mydialog.show();
//output.setText("測試~~~");
//output.setText(input.getText().toString());
System.out.println("1");
new Thread(){
public void run(){
int num;
int x = 10;
int y = 3;
try{
//num = x/y; //模擬伺服器處理結果
//System.out.println("2:" + num);
message = WebService.InsertMsg(input.getText().toString());
sleep(3000);
handler.post(right_message);
}catch(Exception a){
System.out.println("3");
handler.post(error_message);
a.printStackTrace();
}finally{
System.out.println("4");
mydialog.dismiss();
}
}
}.start();
handler = new Handler();
right_message = new Runnable()
{
public void run() {
// TODO Auto-generated method stub
}
};
error_message = new Runnable()
{
public void run() {
// TODO Auto-generated method stub
}
};
System.out.println("5");
}
});
public static String InsertMsg(String personal){
//String method = "getMessage";
String method = "Insert";
String output = "";
ArrayList list = null;
try
{
SoapObject request = new SoapObject(NAMESPACE, method);
request.addProperty("msg_content", personal);
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet = true;
envelope.setOutputSoapObject(request);
HttpTransportSE androidHttpTransport = new HttpTransportSE(URL_PATH + SERVICE_NAME);
androidHttpTransport.call(NAMESPACE + method, envelope);
Object result = envelope.getResponse();
output = result.toString();
}catch(Exception e){}
System.gc();
return output;
}
畫面執行結果
完整說明如下:
http://linjsian.blogspot.com/2012/04/android-buttonwebserver_10.html
2012年4月8日 星期日
Android-TQC105 MENU功能選單
學習重點:
(1)利用menu按鈕,改變setTitle
(1)利用menu按鈕,改變setTitle
package COM.TQC.GDD01;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
public class GDD01 extends Activity {
// ...
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
protected static final int MENU_ADD=Menu.FIRST;
protected static final int MENU_DEL=Menu.FIRST+1;
protected static final int MENU_ABOUT=Menu.FIRST+2;
protected static final int MENU_Quit=Menu.FIRST+3;
@Override
//建立menu選單的項目
public boolean onCreateOptionsMenu(Menu menu){
super.onCreateOptionsMenu(menu);
//新增menu選單,再利用onOptionsItemSelected擷取選單選擇項目,處理相對應的事件
menu.add(0,MENU_ADD,0,getString(R.string.menu_add));
menu.add(0,MENU_DEL,0,getString(R.string.menu_delete));
menu.add(0,MENU_ABOUT,0,getString(R.string.menu_about));
menu.add(0,MENU_Quit,0,getString(R.string.menu_exit));
return true ;
}
//menu被選擇執行後的事件處理
public boolean onOptionsItemSelected(MenuItem item){
//點選menu,出現四個選擇,以switch區分點選何項,設定title並繫結至其功能
switch(item.getItemId()){
case MENU_ADD:
setTitleAdd();
break;
case MENU_DEL:
setTitleDEL();
break;
case MENU_ABOUT:
openAboutDialog();
break;
case MENU_Quit:
openExitDialog();
break;
}
return super.onOptionsItemSelected(item) ;
}
private void setTitleAdd() {
// TODO Auto-generated method stub
setTitle(getString(R.string.menu_add));
}
private void setTitleDEL() {
// TODO Auto-generated method stub
setTitle(getString(R.string.menu_delete));
}
//點選「關於」功能
public void openAboutDialog()
{
setTitle(getString(R.string.menu_about));
AlertDialog.Builder dialog=new AlertDialog.Builder(this);
dialog.setTitle(R.string.menu_add); //新增項目
dialog.setMessage(R.string.menu_about_msg); //TQC+ Android認證題庫
dialog.setPositiveButton(R.string.str_ok,new DialogInterface.OnClickListener()
{ //確認
@Override
public void onClick(DialogInterface arg0, int arg1) {
// TODO Auto-generated method stub
}
});
dialog.show();
}
//點選「離開」功能
public void openExitDialog()
{
//開啟視窗詢問【是否確認離開系統?】,於訊息視窗點選「確認」後,關閉程式
//於訊息視窗點選「取消」,則關閉此詢問視窗,則回到MENU功能選單畫面
AlertDialog.Builder dialog = new AlertDialog.Builder(this);
dialog.setTitle(R.string.menu_exit);//離開
dialog.setMessage(R.string.menu_exit_msg); //是否確認離開系統
dialog.setPositiveButton(R.string.str_ok,new DialogInterface.OnClickListener(){
//確認
@Override
public void onClick(DialogInterface arg0, int arg1) {
// TODO Auto-generated method stub
finish();
}
});
dialog.setNegativeButton(R.string.str_cancel, new DialogInterface.OnClickListener() {
//取消
@Override
public void onClick(DialogInterface arg0, int arg1) {
// TODO Auto-generated method stub
//dialog.dismiss();
}
});
dialog.show();
}
}
Android-TQC103點餐系統
學習重點:
(1)點選button呼叫AlertDialog
(2)將陣列的值放值AlertDialog中並將勾選的,顯示出來。
(1)點選button呼叫AlertDialog
(2)將陣列的值放值AlertDialog中並將勾選的,顯示出來。
package COM.TQC.GDD01;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.DialogInterface.OnMultiChoiceClickListener;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
public class GDD01 extends Activity {
private Button button1;
private TextView text1;
private String[] s1={"美味蟹堡","義式香腸堡","蔬菜水果堡","香蕉潛艇堡","香烤雞肉堡"};
private boolean[] chsBool={false,false,false,false,false,false}; //先將checkbox值設為false
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
findview(); //宣告物件
setlistner();
}
private void findview(){
// TODO Auto-generated method stub
button1 = (Button) findViewById(R.id.button1);
text1 = (TextView) findViewById(R.id.text1);
}
private void setlistner() {
// TODO Auto-generated method stub
button1.setOnClickListener(new Button.OnClickListener()
{
@Override
public void onClick(View v)
{
setdialog();
}
});
}
private void setdialog()
{
AlertDialog dialog=new AlertDialog.Builder(GDD01.this)
//.setIcon(null)//設定無圖示
.setTitle(getResources().getString(R.string.str2))
.setMultiChoiceItems(s1, chsBool, new OnMultiChoiceClickListener()
{
public void onClick(DialogInterface dialog, int which, boolean isChecked)
{
}
})
.setPositiveButton("確認", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
String selectedStr = "";
for(int _i=0;_i< chsBool.length;_i++)
{
if(chsBool[_i] == true)
{
selectedStr=selectedStr+"\n"+s1[_i].toString(); //換行動作
}
}
text1.setText("您點的餐有:"+selectedStr+"\n");
}
})
.setNegativeButton("離開", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
}
})
.create();
dialog.show();
}
}
Android-TQC101整存整付計算機
學習重點:
(1)利用button將textview的值進行運作,並以settext方式呈現出計算的值
(1)利用button將textview的值進行運作,並以settext方式呈現出計算的值
package COM.TQC.GDD01;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class GDD01 extends Activity
{
public Button mButton1;
public EditText mEditText1,mEditText2,mEditText3;
public TextView mTextView1;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mButton1=(Button)findViewById(R.id.submit);
mEditText1=(EditText)findViewById(R.id.input_lend);
mEditText2=(EditText)findViewById(R.id.input_rate);
mEditText3=(EditText)findViewById(R.id.input_number);
mTextView1=(TextView)findViewById(R.id.amount);
mButton1.setOnClickListener(new Button.OnClickListener(){
@Override
public void onClick(View v) {
int a =Integer.parseInt(mEditText1.getText().toString());
Double b =Double.parseDouble(mEditText2.getText().toString());
int c =Integer.parseInt(mEditText3.getText().toString());
b=b/100/12+1;
Double count=b;
for(int i=1;i< c;i++)
{
count=count*b;
}
int area= (int) (a*count);
String answer=Integer.toString(area);
mTextView1.setText("本利和為"+answer);
}
});
}
}
訂閱:
意見 (Atom)






















