顯示具有 google 標籤的文章。 顯示所有文章
顯示具有 google 標籤的文章。 顯示所有文章

2010/01/03

使用A/B測試 最佳化你的Adsense程式碼

有很多發布商不能確定自己的網頁投放哪一種廣告格式和顏色效果最好。也有些發布商認為自己目前投放的廣告格式就是最好的,而事實是不是真的是這樣呢?

究竟哪一種廣告格式和顏色的搭配效果最好,需要由數據說話。A/B測試可以幫你找到答案。

如果您無法確定300x250和336x280格式,或是兩種不同配色哪一種能夠帶來更好的收益,就可以用 A/B 測試讓不同的廣告方案之間互相競爭一下。

首先為測試的兩組廣告分別設置自定義渠道,然後將這兩組廣告代碼分別替換以下模板的中文部分並添加到網頁代碼中,最後您就可以用自定義渠道報告來跟蹤比較這兩組廣告的效果了。同時提醒您在使用 A/B 測試時,注意不要修改其余部分的廣告代碼。

<script type='text/javascript'>
var random_number = Math.floor(Math.random()*2); // 0,1
switch(random_number)
{
case 0:
// 第1組廣告代碼
break;

case 1:
// 第2組廣告代碼
break;

}
</script>
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>

 

這樣,系統會在這個位置交替顯示兩種廣告格式,在渠道報告中你就可以看到同一個位置這兩種廣告格式的展示量,點擊率等各種數據,並且很容易地知道哪種廣告格式效果更好了。

馬上開始,尋找最適合你的廣告格式吧!(以上資料:The ABCs of A/B Testing)

我有一個大矩形和一個中矩形,我想測試一下哪個效果好。我實際測試後,發現在blogger系統中,有2個問題:

1. 官方網站是此用if statement來判斷要用哪個廣告,但是我在blogger測試時,一直有問題,所以我改成switch statement,如上所示

2. 需要把廣告程式碼中的 " 取代成 &quot;

實際的程式碼如下:

csie-tw.blogspot.com

2009/09/11

Android – Update current location by LocationProvider

摘要

本文將介紹在Android如何使用GPS等LocationProvider取得最新地理位置,並根據此資訊更新地圖物件。

Abstract

This article shows how to get the current geography location from LocationProvider (e.g. GPS) and how to refresh the map object with the location information.



1. Prepare the map resource, Internet accessibility, and location accessibility.

1.1 Open the main.xml file in layout directory, and add a map reource in the file.

Please follow step 1.1 in this article.

1.2 Open AndroidManifest.xml, add the following 4 rules:

<uses-library android:name="com.google.android.maps"/>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>

Therefore, the file would be like:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="
http://schemas.android.com/apk/res/android"
package="com.google"
android:versionCode="1"
android:versionName="1.0.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".RideSharing_Car"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<uses-library android:name="com.google.android.maps"/>
</application>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>

</manifest>

2. The big picture of program

In the onCreate function, we have to decide choose a specific location provider if there are serveral location providers in your device. The class LocationManager provides accessibility to the system location services. It can access to location functions in all location provider. Do not instantiate this class directly. Instead, you should retrieve it through

Context.getSystemService(Context.LOCATION_SERVICE)

Then, you have to choose one location provider. Call getLocationProvider(…) to set your criteria for choosing a suitable location provider. (Defined in Section 3)

Finally, you should register a listener (locationListener) to be notified periodically by location provider. (Defined in Section 4)

public void requestLocationUpdates (String provider, long minTime, float minDistance, PendingIntent intent)

provider the name of the provider with which to register
minTime the minimum time interval for notifications, in milliseconds. This field is only used as a hint to conserve power, and actual time between location updates may be greater or lesser than this value.
minDistance the minimum distance interval for notifications, in meters.
intent a {#link PendingIntet} to be sent for each location update.


onCreate function:

@Override
protected void onCreate(Bundle icicle)
{
super.onCreate(icicle);
setContentView(R.layout.main);
mapView = (MapView)findViewById(R.id.myMapView1);
locationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
strLocationProvider = getLocationProvider(locationManager);
locationManager.requestLocationUpdates(strLocationProvider, 0, 0, locationListener);
}

http://csie-tw.blogspot.com/2009/09/android-update-current-location-by.html

3. getLocationProvider

You can set criteria for choosing a proper location provider. Set some restrictions for criteria ojbect , and then locationManager can get the best provider for to meet the criteria by calling getBestProvider.

If the device only have GPS as the location provider, you may just return LocationManager.GPS_PROVIDER directly.

public String getLocationProvider(LocationManager locationManager)
{
String provider="";
try
{
Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_FINE);
criteria.setAltitudeRequired(false);
criteria.setBearingRequired(false);
criteria.setCostAllowed(true);
criteria.setPowerRequirement(Criteria.POWER_LOW);
provider = locationManager.getBestProvider(criteria, true);
}
catch(Exception e)
{
Log.d(TAG, e.toString());
e.printStackTrace();
}
return provider;
}

4. locationListener

Used for receiving notifications from the LocationManager when the location has changed. These methods are called if the LocationListener has been registered with the location manager service. Whenever the location provider update current location, onLocationChanged(…) will be called. And the location object is available at this moment, so we refresh the map according to the lastest location. Note that the parameter type in animateTo(…) is GeoPoint instead of Location, so call getGeoByLocation before pass the location to this method.

public final LocationListener locationListener = new LocationListener()
{
Override
public void onLocationChanged(Location location)
{

mapView.getController().animateTo(getGeoByLocation(location));
}
@Override
public void onProviderDisabled(String provider)
{
// TODO Auto-generated method stub
}
@Override
public void onProviderEnabled(String provider)
{
// TODO Auto-generated method stub
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras)
{
// TODO Auto-generated method stub
}
};

getGeoByLocation function:

private GeoPoint getGeoByLocation(Location location)
{
GeoPoint gp = null;
try
{
if (location != null)
{
double geoLatitude = location.getLatitude()*1E6;
double geoLongitude = location.getLongitude()*1E6;
gp = new GeoPoint((int) geoLatitude, (int) geoLongitude);
}
}
catch(Exception e)
{
e.printStackTrace();
}
return gp;
}

References:

[1] LocationManager | Android Developers

Related articles for Android:

[1] Driving Direction (Route Path):

http://csie-tw.blogspot.com/2009/06/android-driving-direction-route-path.html

[2] Enable Android log:

http://csie-tw.blogspot.com/2009/05/enable-android-log-androidlog.html

[3] Setup the Android (Trad. Chinese):

http://csie-tw.blogspot.com/2008/01/androideclipse.html

2009/06/21

Android - Driving Direction (Route Path)

Abstract

The DrivingDirection package (com.google.googlenav.DrivingDirection) is removed since Android SDK 1.1. However, in this article, I will show you how to adopt driving direction function in MapView object without the DrivingDirection package.

摘要
地圖駕駛導航的功能在Android SDK 1.1以後已經被移除,不過這篇文章我將會展示如何在沒有DrivingDirection這個package的情況下,依然可以使用駕駛導航的功能,必且顯示在MapView物件。

1. Prepare the map resource and Internet accessibility.

1.1 Open the main.xml file in layout directory, and add a map reource in the file.
XML:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<com.google.android.maps.MapView
android:id="@+id/myMapView1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_x="0px"
android:enabled="true"
android:clickable="true"
android:apiKey="0mRN-6bSm63hZJtPZSmcjoZAzdCztLnZv-O4SZw" android:layout_y="105px">
</com.google.android.maps.MapView>
</LinearLayout>



1.1.1 You have to apply a android map api key for your computer. Find the debug.keystore path in Eclpise(Window->Rreferences).

[csie-tw.blogspot.com[6].jpg]

1.1.2 In cmd console, type

cmd:
keytool -list -alias androiddebugkey -keystore "C:\Documents and Settings\Administrator\Local Settings\Application Data\
Android\debug.keystore" -storepass android -keypass android

csie-tw.blogspot.com (1)
1.1.3 Go to http://code.google.com/intl/zh-TW/android/maps-api-signup.html ,type your MD5 fingerprint, so that you can get the map api key as follow.

csie-tw.blogspot.com (1.5)
1.2 Open AndroidManifest.xml, add
<uses-library android:name="com.google.android.maps"/>
and
<uses-permission android:name="android.permission.INTERNET" />

Therefore, the file would be something like:

XML:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.goolge"
android:versionCode="1"
android:versionName="1.0.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".RoutePath"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<uses-library android:name="com.google.android.maps"/>
</application>
<uses-permission android:name="android.permission.INTERNET" />
</manifest>

2. Draw the route path in your map.


2.1 Get KML route file from google.
For a normal user, the google maps help them get the route path in map figures. However, we would like to get the KML file of the route path. I found a parameter in the google map URL controls the output type.

  • output= Output format (blank (default) is a standard webpage for user)
  • output=html Uses the old style Google Local page format from before it merged with Google Maps, with the small map and large sidebar.
  • output=js Outputs JavaScript object literals and function calls used by Google Maps, including encoded polyline data for driving directions, and stage information in HTML format.
  • output=kml Outputs a KML file containing information representing the current map. (works with Normal Searches, Directions and MyMaps)
  • output=nl Outputs a small KML file containing a NetworkLink wrapper linking to a URL from which Google Earth and Google Maps can obtain the information (only known to work with MyMaps).
  • output=embed Outputs HTML suitable for embedding in third party sites, only works with the presence of the encrypted s= param, presumably to stop arbitrary content being included.
  • output=dragdir returns a JSON object that contains the reverse geocode and a an encoded polyline for a given saddr (start point of the route) and daddr (endpoint of the route)
  • output=georss (Geo)RSS output for the current map - probably only MyMaps

And the latitude and longitude of source and destination are determined by saddr and daddr parameter, respectively.

For example, a route KML file can be accessed through this URL:
http://maps.google.com/maps?f=d&hl=en&saddr=25.04202,121.534761&daddr=25.05202,121.554761&ie=UTF8&0&om=0&output=kml



In the KML file, each point in the route path is shown in terms of (longitude, latitude, heigth).

2.2 Create DrawPath(…) in your activity. This function do the following procedure.

a) Building the URL from src and dest.
b) Connecting to the URL and create a DocumentBuilder to parse the KML file.

c) Split each point in the path and draw each the line on the mMapView01.

Java:

private void DrawPath(GeoPoint src,GeoPoint dest, int color, MapView mMapView01)
{
// connect to map web service
StringBuilder urlString = new StringBuilder();
urlString.append("http://maps.google.com/maps?f=d&hl=en");
urlString.append("&saddr=");//from
urlString.append( Double.toString((double)src.getLatitudeE6()/1.0E6 ));
urlString.append(",");
urlString.append( Double.toString((double)src.getLongitudeE6()/1.0E6 ));
urlString.append("&daddr=");//to
urlString.append( Double.toString((double)dest.getLatitudeE6()/1.0E6 ));
urlString.append(",");
urlString.append( Double.toString((double)dest.getLongitudeE6()/1.0E6 ));
urlString.append("&ie=UTF8&0&om=0&output=kml");
Log.d("xxx","URL="+urlString.toString());
// get the kml (XML) doc. And parse it to get the coordinates(direction route).
Document doc = null;
HttpURLConnection urlConnection= null;
URL url = null;
try
{
url = new URL(urlString.toString());
urlConnection=(HttpURLConnection)url.openConnection();
urlConnection.setRequestMethod("GET");
urlConnection.setDoOutput(true);
urlConnection.setDoInput(true);
urlConnection.connect();

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
doc = db.parse(urlConnection.getInputStream());

if(doc.getElementsByTagName("GeometryCollection").getLength()>0)
{
//String path = doc.getElementsByTagName("GeometryCollection").item(0).getFirstChild().getFirstChild().getNodeName();
String path = doc.getElementsByTagName("GeometryCollection").item(0).getFirstChild().getFirstChild().getFirstChild().getNodeValue() ;
Log.d("xxx","path="+ path);
String [] pairs = path.split(" ");
String[] lngLat = pairs[0].split(","); // lngLat[0]=longitude lngLat[1]=latitude lngLat[2]=height
// src
GeoPoint startGP = new GeoPoint((int)(Double.parseDouble(lngLat[1])*1E6),(int)(Double.parseDouble(lngLat[0])*1E6));
mMapView01.getOverlays().add(new MyOverLay(startGP,startGP,1));
GeoPoint gp1;
GeoPoint gp2 = startGP;
for(int i=1;i<pairs.length;i++) // the last one would be crash
{
lngLat = pairs[i].split(",");
gp1 = gp2;
// watch out! For GeoPoint, first:latitude, second:longitude
gp2 = new GeoPoint((int)(Double.parseDouble(lngLat[1])*1E6),(int)(Double.parseDouble(lngLat[0])*1E6));
mMapView01.getOverlays().add(new MyOverLay(gp1,gp2,2,color));
Log.d("xxx","pair:" + pairs[i]);
}
mMapView01.getOverlays().add(new MyOverLay(dest,dest, 3)); // use the default color
}
}
catch (MalformedURLException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
catch (ParserConfigurationException e)
{
e.printStackTrace();
}
catch (SAXException e)
{
e.printStackTrace();
}
}

2.3 Adding MyOverlay class – Drawing the points and lines on the ViewMap.

Java:

package com.goolge;

import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Point;
import android.graphics.RectF;
import com.google.android.maps.GeoPoint;
import com.google.android.maps.MapView;
import com.google.android.maps.Overlay;
import com.google.android.maps.Projection;

public class MyOverLay extends Overlay
{
private GeoPoint gp1;
private GeoPoint gp2;
private int mRadius=6;
private int mode=0;
private int defaultColor;
private String text="";
private Bitmap img = null;

public MyOverLay(GeoPoint gp1,GeoPoint gp2,int mode) // GeoPoint is a int. (6E)
{
this.gp1 = gp1;
this.gp2 = gp2;
this.mode = mode;
defaultColor = 999; // no defaultColor

}

public MyOverLay(GeoPoint gp1,GeoPoint gp2,int mode, int defaultColor)
{
this.gp1 = gp1;
this.gp2 = gp2;
this.mode = mode;
this.defaultColor = defaultColor;
}
public void setText(String t)
{
this.text = t;
}
public void setBitmap(Bitmap bitmap)
{
this.img = bitmap;
}
public int getMode()
{
return mode;
}

@Override
public boolean draw
(Canvas canvas, MapView mapView, boolean shadow, long when)
{
Projection projection = mapView.getProjection();
if (shadow == false)
{
Paint paint = new Paint();
paint.setAntiAlias(true);
Point point = new Point();
projection.toPixels(gp1, point);
// mode=1&#65306;start
if(mode==1)
{
if(defaultColor==999)
paint.setColor(Color.BLUE);
else
paint.setColor(defaultColor);
RectF oval=new RectF(point.x - mRadius, point.y - mRadius,
point.x + mRadius, point.y + mRadius);
// start point
canvas.drawOval(oval, paint);
}
// mode=2&#65306;path
else if(mode==2)
{
if(defaultColor==999)
paint.setColor(Color.RED);
else
paint.setColor(defaultColor);
Point point2 = new Point();
projection.toPixels(gp2, point2);
paint.setStrokeWidth(5);
paint.setAlpha(120);
canvas.drawLine(point.x, point.y, point2.x,point2.y, paint);
}
/* mode=3&#65306;end */
else if(mode==3)
{
/* the last path */

if(defaultColor==999)
paint.setColor(Color.GREEN);
else
paint.setColor(defaultColor);
Point point2 = new Point();
projection.toPixels(gp2, point2);
paint.setStrokeWidth(5);
paint.setAlpha(120);
canvas.drawLine(point.x, point.y, point2.x,point2.y, paint);
RectF oval=new RectF(point2.x - mRadius,point2.y - mRadius,
point2.x + mRadius,point2.y + mRadius);
/* end point */
paint.setAlpha(255);
canvas.drawOval(oval, paint);
}
}
return super.draw(canvas, mapView, shadow, when);
}

}

 

3. How to use DrawPath(…) function in your activity.

3.1 Your activity must extends MapActivity, instead of Activity.

Java:

ublic class RoutePath extends MapActivity {
/** Called when the activity is first created. */

MapView mapView;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

MapView mapView = (MapView) findViewById(R.id.myMapView1);
double src_lat = 25.04202; // the testing source
double src_long = 121.534761;
double dest_lat = 25.05202; // the testing destination
double dest_long = 121.554761;
GeoPoint srcGeoPoint = new GeoPoint((int) (src_lat * 1E6),
(int) (src_long * 1E6));
GeoPoint destGeoPoint = new GeoPoint((int) (dest_lat * 1E6),
(int) (dest_long * 1E6));

DrawPath(srcGeoPoint, destGeoPoint, Color.GREEN, mapView);

mapView.getController().animateTo(srcGeoPoint);
mapView.getController().setZoom(15);

}

@Override
protected boolean isRouteDisplayed() {
// TODO Auto-generated method stub
return false;
}

private void DrawPath(GeoPoint src, GeoPoint dest, int color,
MapView mMapView01) {

// code in section 2.2

}

}

3.2 The screenshot

Emulator:
csie-tw.blogspot.com (3)
HTC G1: Actually, the driving direction is just one of the function of our project. Our project is so-called Dynamic ridesharing.

csie-tw.blogspot.com (5)

4. Trouble Shooting

When the program is executed, we can observe the logcat in Eclipse to see if the parsing procedure works properly or not. If there is no path shown on the map, you should check if the distance of source and destination is too long(e.g., from Taiwan to Japan). No routing path will be shown in this case.
[csie-tw.blogspot.com (4)[4].jpg] 
To enable the logcat, please refer to:
http://csie-tw.blogspot.com/2009/05/enable-android-log-androidlog.html

5. Source code

Download here http://www.mediafire.com/?tlfshkkq58l38p1#

or http://webtoolplus.com/downloads/RoutePath.zip.

Please let me know if it's broken.

6. References

[1] Google Map Parameters:
http://mapki.com/index.php?title=Google_Map_Parameters
[2] Enable Android log:
http://csie-tw.blogspot.com/2009/05/enable-android-log-androidlog.html
[3] Setup the Android (Trad. Chinese):
http://csie-tw.blogspot.com/2008/01/androideclipse.html
[4] Android – Update current location by LocationProvider
http://csie-tw.blogspot.com/2009/09/android-update-current-location-by.html

2009/05/23

Enable Android log (啟動Android的log功能)

If you want to enable the Android log, the first thing you need to do is make the LogCar View visible.
Eclipse > Window > Customize Perspective > Shortcuts > Submenus : Show View > Categories : Android > LogCat



To open the view, clicking Window > Show View > LogCat


In your Android project, import android.util.Log;
Then using the static variable Log to keep trace of your target.
Ex: Log.d("DEBUG", "message");



Read more:
[1] Driving Direction (Route Path)
[2] Android – Update current location by LocationProvider

2009/04/26

(原創) Google Insights for Search(關鍵字搜尋趨勢比較)

Google Insights for Search是一個對於優化網站(SEO)相當重要的工具,他可以幫你比較各種關鍵字的趨勢,使得廣告主可以針對目前的趨勢設計廣告。在使用時,最好先登入你的Google帳號,這樣可以看到更多的統計資料與數字。呈現的數字子是比例關係,不會有確切的查詢數字。

比如我查詢歷屆總統,看看他們的熱門程度,很明顯的,在520前後,馬英九的查詢次數最多,而陳水扁的流量也暴衝好幾次,李登輝則表現平平。



Google Insights for Search不只能限定國家,還可以限定地點,時間等等。是廣告主觀察趨勢的重要指標。更多功能請自行測試:http://www.google.com/insights/search/

2008/01/27

Android配合Eclipse環境建置

開放手機聯盟 (Open Handset Alliance) 是由超過 30 家科技與行動電話公司所組成的團體,該團體正在研發 Android,這是第一個完整、開放且免費的行動電話平台。為了協助開發人員開始開發新的應用程式,Google推出 「Android 軟體開發套件」。

Eclipse是著名的跨平台的自由集成開發環境(IDE)。最初主要用來Java語言開發,但是目前亦有人通過插件使其作為其他計算機語言比如C++和Python的開發工具。Eclipse的本身只是一個框架平台,但是眾多插件的支持使得Eclipse擁有其他功能相對固定的IDE軟件很難具有的靈活性。許多軟件開發商以Eclipse為框架開發自己的IDE。

本文將介紹如何使用Eclipse開發Android軟體。



1. 建立目錄 D:\Android

2. 下載 Google Android SDK
http://developer.android.com/sdk
解壓後改名"android-sdk-windows-1.1_r1" -> "android_sdk"
放到D:\Android\android_sdk

3. 下載 eclipse(ex:Eclipse IDE for Java Developers)
http://www.eclipse.org/downloads/
解壓後放在D:\softwate\eclipse

4. 下載並安裝JDK (ex:Java SE Development Kit 6 Update 4)
網址:http://java.sun.com/javase/downloads/index.jsp

設定系統PATH:我的電腦右鍵->內容->進階->環境變數->PATH->編輯->加上你的JRE安裝路徑(比如:C:\Program Files\Java\jre1.6.0_04\bin)


5. 安裝 Android Eclipse Plugin
5.1 Eclipse->Help->Software Update->Find and Install->Search for new features to install
5.2 按下New Remote Site
Name:Android
URL:https://dl-ssl.google.com/android/eclipse/

(如果之前已經安裝過,先到Eclipse Help->Software Update->Manage Configure找到Andriod Development Tools,右鍵,Uninstall)

如果出現「requires plug-in org.eclipse.wst.sse.ui」的錯誤,那就是Eclipse版本錯誤,由於Android需要WST等元件,所以必須要下載有這些元件的版本,無論是Java或JEE版本的都可以。
否則可以手動安裝:
a) Eclipse Modeling Framework (EMF, XSD InfoSet, SDO)
b) Graphical Editing Framework
c) Data Tools Platform
d) Web App Developers

6. 指定Android SDK的位置
Eclipse-> Window -> Preferences -> Android -> SDK Location -> "D:\Android\android_sdk"


7. 建立第一個程式:HelloAndroid
Eclipse -> File -> New -> Project -> Android Project
Project Name:HelloAndroid
Package Name:com.google.android.hello
Activity Name:HelloAndroid
Application:Hello, Android


在HelloAndroid.java貼上程式碼:

package com.google.android.hello;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class Hello extends Activity
{
/** Called when the activity is first created. */
@Override public void onCreate(Bundle icicle)
{
uper.onCreate(icicle);
TextView tv = new TextView(this);
tv.setText("~hello, Android~");
this.setContentView(tv);
}
}



在專案上,右鍵,Run as,Android Application
接著就會出現模擬器,往左邊選擇Applications


選擇Hello, Android


出現執行畫面了!



延伸閱讀:
[1] 駕駛地圖導航Driving Direction (Route Path)
[2] Enable Android log (啟動Android的log功能)
[3] Android – Update current location by LocationProvider

Ref:
[1] Installing the Android SDK
[2] Troubleshooting

Buddhism and Software Developer

In today's fast-paced society, we are often surrounded by work, goals, and external pressures. However, the wisdom found in Buddhism off...