編輯:關於Android編程
這一塊主要用到的知識是android四大組件之一的broadcast receiver(廣播接收者),那麼它接收什麼東東呢,就是我們所無謂的一個個的事件,比如有外撥電話,低電量提示,來短信等等。那什麼又是ip撥號呢,大家可能有這樣的印象,在撥打長途電話的時候號碼前邊會加上幾位數字,這就是所謂的ip號,這樣打電話比直接撥打會便宜一些。其實ip撥號的原理很簡單,它就是利用前邊說的broadcast receiver監聽到我們所撥打的號碼,然後把它提取出來,在其前邊加上ip號,最後修改成所謂的ip電話號碼,ok,直接上代碼啦......
這個想必大家都很熟悉了,先建一個設置ip號的小界面,規定其只能輸入電話類型的號碼,沒啥難度,直接上效果圖:
接下裡就到了比較關鍵的步驟了,再來一塊:
public class MainActivity extends Activity { private EditText et_ipnumber; private SharedPreferences sp; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); et_ipnumber=(EditText)findViewById(R.id.et_ipnumber); sp=getSharedPreferences("config", MODE_PRIVATE); et_ipnumber.setText(sp.getString("ipnumber", "")); } @SuppressLint("ShowToast") public void click(View view){ String ipnumber=et_ipnumber.getText().toString().trim(); Editor editor=sp.edit(); editor.putString("ipnumber", ipnumber); editor.commit(); Toast.makeText(this,"設置完畢", 0).show(); } }
首先我們通過id找到設置好的ip號,把它賦給ipnumber,得到號碼以後我們需要把它存起來,這樣下次再進去的時候這個號碼還會顯示,用到的是SharedPreferences,它是一個輕量級應用程序內部輕量級的存儲方案,特別適合用於保存軟件配置參數。getSharedPreferences有兩個參數,第一個參數是存儲時的名稱,第二個參數則是文件的打開方式;然後sp調用它的方法的得到一個編輯器editor,將數據保存至SharedPreferences,別忘了用commit()方法提交,拿到這個數據之後就把它返給et_ipnumber的文本中,這樣一個基礎的ip撥號設置器就完成了。
布局完成了,接下來就要干活了,去監聽外撥電話然後將其修改成ip號碼的形式。
我們需要建一個java類,繼承Broadcast receiver,上代碼:
public class OutCall extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { System.out.println("發現一個外撥電話"); String number=getResultData(); System.out.println("這是外撥電話的號碼");//得到外撥電話號碼 //替換號碼 SharedPreferences sp =context.getSharedPreferences("config", context.MODE_PRIVATE); String ipnumber=sp.getString("ipnumber", ""); String newnumber=ipnumber+number; //得到新的外撥號碼 setResultData(newnumber); } }
當有一個外撥電話時它便會調用onReceive方法(關於這個方法和相關知識的補充放到下一篇),我們還可以把監聽到的電話號碼顯示出來,然後將其和設置好的ip號相加得到最終的ip電話號碼。上機上效果圖吧:
我給自己打的電話,前邊加上了設置好的ip號1234,ok,大體就是這樣,下一篇說說這個小例子裡邊出現的一些問題還有一些必要的附帶知識,先這樣。
注:本文demo已經提交github,地址完整代碼如下,demo工程已經上傳至GitHub, github地址https://github.com/wsclwps123
如圖所示為程序效果動畫圖地圖滾動的原理在本人之前博客的文章中介紹過人物在屏幕中的移動方式,因為之前拼的游戲地圖是完全填充整個手機屏幕的,所以無需處理地圖的平滑滾動。這篇文
一、概述在Android的開發中,經常聽到“內存洩漏”這個詞。“內存洩漏”就是一個對象已經不需要再使用了,但是因為其它的對象持有該對象的引用,導致它的內存不能被回收。“內
這篇文章裡面寫了用seralizable使對象序列化在Activity直之間進行傳遞seralizable是在java api中的類,而在android中也有一個類使對象