假設LocationManager 用的是系統的service
mLocationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
mLocationManager .requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 100, 100, MyLocation.this);
當App 關閉之後,會發現GPS還會繼續搜尋 導致手機耗電
這是因為這段code把 LocationListener 綁到了service中
所以要記得在關閉App後 解除綁定
protected void onDestroy() {
super.onDestroy();
locationManager.removeUpdates(MyLocation.this);
}
2012年11月5日 星期一
2012年9月9日 星期日
如何用Excel建立 直條圖(長條圖) 與 折線圖 合併圖表
2012年5月17日 星期四
2012年5月15日 星期二
Intent and Intent Filter in Android
內容涵蓋:
1.在App中開啟另一個App
2.了解Intent-Filter的使用
參考:
http://developer.android.com/reference/android/content/Intent.html
http://developer.android.com/guide/topics/intents/intents-filters.html
首先從Intent說起
先看一下官方文檔:
可以看到Intent分為兩個種類
一種為 Explicit Intents
另一種為 Implicit Intents
查一下英文字典:
Explicit adj. 明顯的
Implicit adj. 暗示的
從文檔可看出 Explicit Intent 使用方式很明確 就是指定 component 讓系統去調用
而 Implicit Intent就是提供"資訊", 讓系統決定去調用哪個component
本文要講的重點是第二種: Implicit Intent
而要了解Implicit Intent必須先了解 Intent-Filter
Intent-Filter由三個元素組成
1.action
2.category
3.data
而從Filter本身的含意 : 過濾,篩選
可以判斷 Intent-Filter可以指定上列三種元素的屬性
進而讓符合條件的Intent通過, 進而執行該Activity or Service or..
因此可以得知 Implicit Intent 要提供的資訊就是上面這三種
如果寫過打電話的功能, 一定看過以下代碼
而其中的 Intent.ACTION_DIAL 中就是Android中撥號的Activity中所指定的Action
那如何使用自己的Action呢?
以下為代碼
指定action為"maca.demo.GOTO_INTEN"
而如何調用就和之前一樣
而category和data也就是同樣的原理 這裡僅附上代碼
xml:
java:
1.在App中開啟另一個App
2.了解Intent-Filter的使用
參考:
http://developer.android.com/reference/android/content/Intent.html
http://developer.android.com/guide/topics/intents/intents-filters.html
首先從Intent說起
先看一下官方文檔:
Explicit Intents have specified a component (via
setComponent(ComponentName)
or setClass(Context, Class)
), which provides the exact class to be run. Often these will not include any other information, simply being a way for an application to launch various internal activities it has as the user interacts with the application.
Implicit Intents have not specified a component; instead, they must include enough information for the system to determine which of the available components is best to run for that intent.
可以看到Intent分為兩個種類
一種為 Explicit Intents
另一種為 Implicit Intents
查一下英文字典:
Explicit adj. 明顯的
Implicit adj. 暗示的
從文檔可看出 Explicit Intent 使用方式很明確 就是指定 component 讓系統去調用
而 Implicit Intent就是提供"資訊", 讓系統決定去調用哪個component
本文要講的重點是第二種: Implicit Intent
而要了解Implicit Intent必須先了解 Intent-Filter
Intent-Filter由三個元素組成
1.action
2.category
3.data
而從Filter本身的含意 : 過濾,篩選
可以判斷 Intent-Filter可以指定上列三種元素的屬性
進而讓符合條件的Intent通過, 進而執行該Activity or Service or..
因此可以得知 Implicit Intent 要提供的資訊就是上面這三種
如果寫過打電話的功能, 一定看過以下代碼
Intent _Intent = new Intent();
_Intent.setAction(Intent.ACTION_DIAL);
_Intent.setData(Uri.parse("tel:0123456789"));
startActivity(_Intent);
而其中的 Intent.ACTION_DIAL 中就是Android中撥號的Activity中所指定的Action
那如何使用自己的Action呢?
以下為代碼
<activity
android:name=".intent.IntentDemoActivity"
android:label="@string/app_name"
>
<intent-filter>
<action android:name="maca.demo.GOTO_INTENT" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
指定action為"maca.demo.GOTO_INTEN"
而如何調用就和之前一樣
Intent
_Intent = new Intent();
_Intent.setAction("maca.demo.GOTO_INTENT");
startActivity(_Intent);
而category和data也就是同樣的原理 這裡僅附上代碼
xml:
<intent-filter>
<action android:name="maca.demo.GOTO_INTENT" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="maca.demo.category.INTENT" />
<data android:scheme="hello" android:mimeType="text/plain"></data>
</intent-filter>
java:
Intent _Intent = new Intent();
_Intent.setAction("maca.demo.GOTO_INTENT");
_Intent.addCategory("maca.demo.category.INTENT");
_Intent.setDataAndType(Uri.parse("hello://nihowma"), "text/plain");
startActivity(_Intent);
2012年5月12日 星期六
Random String in Python
'''
Created on 2012-5-13
@author: cnp
'''
import string
import random
def random_string(size=6,
chars=string.ascii_letters + string.digits):
return ''.join(random.choice(chars)
for x in xrange(size))
print random_string()
output:
bXwN6t
2012年5月10日 星期四
Hashing in Python
hashlib 裡面有md5 和sha可以使用
以下為範例
'''
Created on 2012-5-11
@author: cnp
'''
import hashlib
import hmac
x= hashlib.md5("MACA")
print x.hexdigest()
x= hashlib.sha256("udacity")
print x.hexdigest()
x= hmac.new("Secret", "HAHA").hexdigest()
print x
output:
19e165f571d62cbd06b97cc1413c86e2
6b63aae7ade6895dd8cd5b2621dccd546e278398
0224daa3a5efbaaa2414745183e20646
2012年5月9日 星期三
ExpandableListView and BaseExpandableListAdapter in Android
SDK版本: 3.0
系統: Android 4.0.3
使用過的人AdapterView一定知道有三個必備的元素
第一個 : AdapterView本身
第二個 : Data
第三個 : Adapter
現在來一個一個解決他們
第一個 : AdapterView (使用ExpandableListView)
xml :
之後就 findViewById...不用說了
第二個 : Data
Data分成兩個部分 : Group還有Child
範例如下:
Group部分: 一共三個人
Child部分:
第三個 : Adapter
這個地方看起來最複雜 但是實際上就是看名稱實現他們而已
主要是看自己的需求再來看怎樣實現他們
以下是範例
最後記得要把它們串在一起:
所以在 xml 加上這行把圖標的位置指向null
系統: Android 4.0.3
使用過的人AdapterView一定知道有三個必備的元素
第一個 : AdapterView本身
第二個 : Data
第三個 : Adapter
現在來一個一個解決他們
第一個 : AdapterView (使用ExpandableListView)
xml :
<ExpandableListView
android:id="@+id/expandableListView1"
android:groupIndicator="@null"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</ExpandableListView>
之後就 findViewById...不用說了
第二個 : Data
Data分成兩個部分 : Group還有Child
範例如下:
Group部分: 一共三個人
List<String>
_GroupList = new
ArrayList<String>();
_GroupList.add("Maca");
_GroupList.add("Paca");
_GroupList.add("Waca");
Child部分:
List<View> _ChildList
= new
ArrayList<View>();
TextView _TextView1 = new TextView(this);
_TextView1.setText("Hello Maca");
_TextView1.setTextColor(Color.RED);
TextView _TextView2 = new TextView(this);
_TextView2.setText("Hello Paca");
_TextView2.setTextColor(Color.RED);
TextView _TextView3 = new TextView(this);
_TextView3.setText("Hello Waca");
_TextView3.setTextColor(Color.RED);
_ChildList.add(_TextView1);
_ChildList.add(_TextView2);
_ChildList.add(_TextView3);
第三個 : Adapter
這個地方看起來最複雜 但是實際上就是看名稱實現他們而已
主要是看自己的需求再來看怎樣實現他們
以下是範例
class MyAdapter extends BaseExpandableListAdapter
{
private Context mContext;
private List<String> mGroupList;
private List<View> mChildList;
public MyAdapter(Context
pContext,List<String> pGroupList,List<View> pChildList)
{
mContext = pContext;
mGroupList = pGroupList;
mChildList = pChildList;
}
public Object getChild(int groupPosition, int childPosition)
{
return mChildList.get(childPosition);
}
public long getChildId(int groupPosition, int childPosition)
{
// TODO Auto-generated method stub
return 0;
}
public View getChildView(int groupPosition, int childPosition,
boolean isLastChild, View
convertView, ViewGroup parent)
{
// TODO Auto-generated method stub
return mChildList.get(groupPosition);
}
public int getChildrenCount(int groupPosition)
{
// TODO Auto-generated method stub
return 1;
}
public Object getGroup(int groupPosition)
{
// TODO Auto-generated method stub
return mGroupList.get(groupPosition);
}
public int getGroupCount()
{
// TODO Auto-generated method stub
return mGroupList.size();
}
public long getGroupId(int groupPosition)
{
// TODO Auto-generated method stub
return 0;
}
public View getGroupView(int groupPosition, boolean isExpanded, View
convertView,
ViewGroup parent)
{
TextView _View = new TextView(mContext);
_View.setText(mGroupList.get(groupPosition));
return _View;
}
public boolean hasStableIds()
{
// TODO Auto-generated method stub
return false;
}
public boolean isChildSelectable(int groupPosition, int childPosition)
{
// TODO Auto-generated method stub
return false;
}
}
最後記得要把它們串在一起:
MyAdapter _Adapter = new MyAdapter(this, _GroupList,
_ChildList);
_ExpandableListView.setAdapter(_Adapter);
完成!!
效果圖:
發現有個礙眼的圖標所以在 xml 加上這行把圖標的位置指向null
android:groupIndicator="@null"
搞定
2012年5月8日 星期二
Disable RatingBar in Android
當GridView裡面Item當中有RatingBar的時候
會影響GridView的onItemClick事件無法被觸發
要如何解決這個問題?
(使用版本為3.0 其他的不知道有沒有這個問題)
首先找到了xml中的
android:focusable="false"
使用之後沒有效果...
android:focusableInTouchMode="false"
這個也一樣
android:clickable="false"
也沒用...
最後找到
android:isIndicator="true"
成功~
2012年4月30日 星期一
Python 筆記 namedtuple and sort with lambda expression
'''
Created on 2012-5-1
@author: Maca
'''
from collections import namedtuple
People = namedtuple("People",["Name","Age"])
Lists = [People("Maca","24"),People("Puma","18"),People("Lula","30")]
print Lists
Lists.sort(key=lambda
args:args.Age)
print Lists
Lists.sort(key=lambda
args:args.Name)
print Lists
Outputs:
[People(Name='Maca', Age='24'), People(Name='Puma', Age='18'), People(Name='Lula', Age='30')]
[People(Name='Puma', Age='18'), People(Name='Maca', Age='24'), People(Name='Lula', Age='30')]
[People(Name='Lula', Age='30'), People(Name='Maca', Age='24'), People(Name='Puma', Age='18')]
2012年4月27日 星期五
Python筆記 Set List Dictionary
集合 Set:
fruit = set(['apple','banana','tomato'])
vegetable = set (['carrot','tomato'])
print fruit | vegetable
print fruit - vegetable
print fruit & vegetable
print
fruit ^ vegetable
set(['tomato', 'carrot', 'apple', 'banana'])
set(['apple', 'banana'])
set(['tomato'])
set(['carrot', 'apple', 'banana'])
List:
names = ['maca','Maca','Tony','Grace','Maca']
print names
print names.count('Maca')
names.sort()
print names
names.reverse()
print names
names.remove('Maca')
print names
['maca', 'Maca', 'Tony', 'Grace', 'Maca']
2
['Grace', 'Maca', 'Maca', 'Tony', 'maca']
['maca', 'Tony', 'Maca', 'Maca', 'Grace']
['maca', 'Tony', 'Maca', 'Grace']
Dictionary
Dictionary
di
= {1:"HAHA",2:"LALA",3:"HOHO"}
print di[1]
di[1] = "MIMI"
print di[1]
di["A"]
= "HEHE"
print di
print "-----------------------------------------------------"
print di.keys()
print di.values()
print "-----------------------------------------------------"
print di.pop("A")
print di
del di[2]
print di
HAHA
MIMI
{'A': 'HEHE', 1: 'MIMI', 2: 'LALA', 3: 'HOHO'}
-----------------------------------------------------
['A', 1, 2, 3]
['HEHE', 'MIMI', 'LALA', 'HOHO']
-----------------------------------------------------
HEHE
{1: 'MIMI', 2: 'LALA', 3: 'HOHO'}
{1: 'MIMI', 3: 'HOHO'}
訂閱:
文章 (Atom)