當前位置:首頁 » 操作系統 » androideoe源碼

androideoe源碼

發布時間: 2022-07-27 09:12:36

1. android的天天動聽的效果是怎樣做出來的

是動畫效果吧,實際的我也沒做過,手指滑動的監聽那是必須的,這個就好像下拉刷新一樣,你可以去eoe找找源碼

2. 如何在android開發中建aidl 文件

建立AIDL服務要比建立普通的服務復雜一些,具體步驟如下:

(1)在Eclipse Android工程的java包目錄中建立一個擴展名為aidl的文件。該文件的語法類似於Java代碼,但會稍有不同。詳細介紹見實例52的內容。
(2)如果aidl文件的內容是正確的,ADT會自動生成一個Java介面文件(*.java)。
(3)建立一個服務類(Service的子類)。
(4)實現由aidl文件生成的Java介面。
(5)在AndroidManifest.xml文件中配置AIDL服務,尤其要注意的是,<action>標簽中android:name的屬性值就是客戶端要引用該服務的ID,也就是Intent類的參數值。

建立AIDL服務

本例中將建立一個簡單的AIDL服務。這個AIDL服務只有一個getValue方法,該方法返回一個String類型的值。在安裝完服務後,會在客戶端調用這個getValue方法,並將返回值在TextView組件中輸出。建立這個AIDL服務的步驟如下:
(1)建立一個aidl文件。在Java包目錄中建立一個IMyService.aidl文件。IMyService.aidl文件的位置如圖

IMyService.aidl文件的內容如下:
Java代碼:
package eoe.demo;
interface IMyService {
String getValue();
}

IMyService.aidl文件的內容與Java代碼非常相似,但要注意,不能加修飾符(例如,public、private)、AIDL服務不支持的數據類型(例如,InputStream、OutputStream)等內容。

(2)如果IMyService.aidl文件中的內容輸入正確,ADT會自動生成一個IMyService.java文件。讀者一般並不需要關心這個文件的具體內容,也不需要維護這個文件。關於該文件的具體內容,讀者可以查看本節提供的源代碼。
(3)編寫一個MyService類。MyService是Service的子類,在MyService類中定義了一個內嵌類(MyServiceImpl),該類是IMyService.Stub的子類。MyService類的代碼如下:

Java代碼:
package eoe.demo;
import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.os.RemoteException;
public class MyService extends Service {
public class MyServiceImpl extends IMyService.Stub {
@Override
public String getValue() throws RemoteException {
return "Android/OPhone開發講義";
}
}
@Override
public IBinder onBind(Intent intent) {
return new MyServiceImpl();
}
}

在編寫上面代碼時要注意如下兩點:

IMyService.Stub是根據IMyService.aidl文件自動生成的,一般並不需要管這個類的內容,只需要編寫一個繼承於IMyService.Stub類的子類(MyServiceImpl類)即可。

onBind方法必須返回MyServiceImpl類的對象實例,否則客戶端無法獲得服務對象。

(4)在AndroidManifest.xml文件中配置MyService類,代碼如下:

Java代碼:
<service android:name=".MyService" >
<intent-filter>
<action android:name="net.blogjava.mobile.aidl.IMyService" />
</intent-filter>
</service>

下面來編寫客戶端的調用代碼。首先新建一個Eclipse Android工程(ch08_aidlclient),並將自動生成的IMyService.java文件連同包目錄一起復制到ch08_aidlclient工程的src目錄中,如圖所示。

調用AIDL服務首先要綁定服務,然後才能獲得服務對象,代碼如下:

Java代碼:
package net.blogjava.mobile;
import net.blogjava.mobile.aidl.IMyService;
import android.app.Activity;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.ServiceConnection;
import android.os.Bundle; import android.os.IBinder;
import android.view.View; import android.view.View.OnClickListener;
import android.widget.Button; import android.widget.TextView;
public class Main extends Activity implements OnClickListener {
private IMyService myService = null;
private Button btnInvokeAIDLService;
private Button btnBindAIDLService;
private TextView textView;
private ServiceConnection serviceConnection = new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
// 獲得服務對象
myService = IMyService.Stub.asInterface(service);
btnInvokeAIDLService.setEnabled(true);
}
@Override
public void onServiceDisconnected(ComponentName name) {
}
};
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.btnBindAIDLService:
// 綁定AIDL服務
bindService(new Intent("net.blogjava.mobile.aidl.IMyService"), serviceConnection, Context.BIND_AUTO_CREATE);
break;
case R.id.btnInvokeAIDLService:
try {
textView.setText(myService.getValue());
// 調用服務端的getValue方法
} catch (Exception e) {
}
break;
}
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btnInvokeAIDLService = (Button) findViewById(R.id.btnInvokeAIDLService);
btnBindAIDLService = (Button) findViewById(R.id.btnBindAIDLService); btnInvokeAIDLService.setEnabled(false);
textView = (TextView) findViewById(R.id.textview);
btnInvokeAIDLService.setOnClickListener(this);
btnBindAIDLService.setOnClickListener(this);
}
}

轉載僅供參考,版權屬於原作者。祝你愉快,滿意請採納哦

3. Android怎麼得到toast的內容,不一定是自己軟體的toast

Android中Toast的顯示時間為特定時間且不可更改,但是有時候我們開發設計需要讓Toast顯示更長時間,或者自己完全控制Toast的顯示和關閉。通過查看Toast類的源碼,可以看出,這有點難為它了,Toast類本身並沒有提供相應方法。
但是通過源碼的查看,還是可以看出點眉頭。源碼分析思路在這里轉eoe里的一篇文章,思路較為清晰:
轉:
Toast信息提示框之所以在顯示一定時間後會自動關閉,是因為在系統中有一個Toast隊列。系統會依次從隊列中取(出隊列)一個Toast,並 顯示它。在顯示一段時間後,再關閉,然後再顯示下一個Toast信息提示框。
直到Toast隊列中所有Toast都顯示完為止。那麼有些時候需要這個Toas t信息提示框長時間顯示,直到需要關閉它時通過代碼來控制,而不是讓系統自動來關閉Toast信息提示框。
不過這個要求對於Toast本身來說有些過 分,因為Toast類並沒有提供這個功能。雖然如此,但方法總比問題多。通過一些特殊的處理還是可以實現這個功能的,而且並不復雜。

4. 安卓源代碼

需要SDK,開發者套件。
你多上論壇上逛逛吧。自然就知道怎麼弄了

5. Android 開發源代碼在哪找

是指哪一種?是開源框架,還是別人做的一些demo,還是google提供的api 源碼,前一種的話各種開發論壇,像csdn,51cto,eoe,安卓bus都有,後一種的話可以通過sdk,或者用github去google上面下載

6. android的toast怎麼自定義顯示時間長度

Android中Toast的顯示時間為特定時間且不可更改,但是有時候我們開發設計需要讓Toast顯示更長時間,或者自己完全控制Toast的顯示和關閉。通過查看Toast類的源碼,可以看出,這有點難為它了,Toast類本身並沒有提供相應方法。

但是通過源碼的查看,還是可以看出點眉頭。源碼分析思路在這里轉eoe里的一篇文章,思路較為清晰:

轉:

Toast信息提示框之所以在顯示一定時間後會自動關閉,是因為在系統中有一個Toast隊列。系統會依次從隊列中取(出隊列)一個Toast,並 顯示它。在顯示一段時間後,再關閉,然後再顯示下一個Toast信息提示框。

直到Toast隊列中所有Toast都顯示完為止。那麼有些時候需要這個Toas t信息提示框長時間顯示,直到需要關閉它時通過代碼來控制,而不是讓系統自動來關閉Toast信息提示框。

不過這個要求對於Toast本身來說有些過 分,因為Toast類並沒有提供這個功能。雖然如此,但方法總比問題多。通過一些特殊的處理還是可以實現這個功能的,而且並不復雜。

Toast信息提示框需要調用Toast.show方法來顯示。下面來看一下show方法的源代碼。

public void show() {

if (mNextView == null) {

throw new RuntimeException("setView must have been called");

}

INotificationManager service = getService();

String pkg = mContext.getPackageName();

TN tn = mTN;

try {

// 將當前Toast加入到Toast隊列

service.enqueueToast(pkg, tn, mDuration);

} catch (RemoteException e) {

// Empty

}

}
復制代碼

show方法的代碼並不復雜,可以很容易找到如下的代碼。

service.enqueueToast(pkg, tn, mDuration);
復制代碼

從上面的代碼可以很容易推斷出它的功能是將當前的Toast加入到系統的Toast隊列中。

看到這里,各位讀者應該想到。雖然show方法的表面功能是顯示Toast信息提示框,但其實際的功能是將Toast加入到隊列中,再由系統根據Toast隊列來顯示Toast信息提示框。那麼我們經過更進一步地思考,可以大膽地做出一個初步的方案。

既然系統的Toast隊列可以顯示Toast信息提示框,那麼我們為什麼不可以自己來顯示它呢?

這樣不是可以自己來控制Toast的信息提示框的顯示和關閉了嗎!當然,這就不能再調用show方法來顯示Toast信息提示框了(因為show方法會將Toast加入隊列,這樣我們就控制不了Toast了)。

既然初步方案已擬定,現在就來實施它。先在Toast類找一下還有沒有其他的show方法。

結果發現了一個TN類,該類是Toast的一個內嵌類。在TN類中有一個show方法。TN是ITransientNotification.Stub的子類。從ITransientNotification和TN類中的show方法初步推斷(因為Transient的中文意思是「短暫的」)系統是從Toast隊列中獲得了Toast對象後,利用TN對象的show方法顯示Toast,再利用TN.hide方法來關閉Toast。

首先聲明,這只是假設,我們還不知道這么做是否可行!當然,這也是科學研究的一般方法,先推斷或假設,然後再證明推斷或假設。

現在關鍵的一步是獲得TN對象。遺憾的是TN被聲明成private類型,外部無法訪問。不過別著急。在Toast類中有一個mTN變數。雖然不是public變數,但仍然可以通過反射技術訪問該變數。mTN變數會在創建Toast對象時初始化。

因此,只要獲得mTN變數,就獲得了TN對象。下面的代碼顯示了一個永遠不會自動關閉的Toast信息提示框。

// 先創建一個Toast對象Toast toast = Toast.makeText(this, "永不消失的Toast", Toast.LENGTH_SHORT);// 設置Toast信息提示框顯示的位置(在屏幕頂部水平居中顯示)toast.setGravity(Gravity.TOP | Gravity.CENTER_HORIZONTAL, 0, 0);try{

// 從Toast對象中獲得mTN變數Field field = toast.getClass().getDeclaredField("mTN");

field.setAccessible(true);

Object obj = field.get(toast);

// TN對象中獲得了show方法

Method method = obj.getClass().getDeclaredMethod("show", null);

// 調用show方法來顯示Toast信息提示框

method.invoke(obj, null);

}

catch (Exception e)

{

}
復制代碼

上面的代碼中try{…}catch(…){…}語句中的代碼是關鍵。先利用事先創建好的Toast對象獲得了mTN變數。然後再利用反射技術獲得了TN對象的show方法。

關閉Toast和顯示Toast的方法類似,只是需要獲得hide方法,代碼如下:

try

{

// 需要將前面代碼中的obj變數變成類變數。這樣在多個地方就都可以訪問了

Method method = obj.getClass().getDeclaredMethod("hide", null);

method.invoke(obj, null);

}

catch (Exception e)

{

}
復制代碼

上面的代碼已經很完美地實現了通過代碼控制Toast信息提示框顯示和關閉的功能。

但如果想實現得更完美,可以在Android SDK源代碼中找一個叫ITransientNotification.aidl的文件(該文件是AIDL服務定義文件,將在後面詳細介紹),並在Android工程的src目錄中建一個android.app包,將這個文件放到這個包中。

然後ADT會自動在gen目錄中生成了一個android.app包,包中有一個ITransientNotification.java文件。由於Android SDK自帶的ItransientNotification介面屬於內部資源,外部程序無法訪問,因此,只能將從Toast對象中獲得的mTN變數轉換成剛才生成的ITransientNotification對象了。

這樣就不需要使反射技術獲得show和hide方法了。

經過改良的顯示和關閉Toast信息提示框的代碼如下:

ITransientNotification notification = (ITransientNotification) field.get(toast);

// 顯示Toast信息提示框

notification.show();

// 關閉Toast信息提示框

notification.hide();
復制代碼

最後整理代碼如下:

Java代碼

import java.lang.reflect.Field;

import java.lang.reflect.Method;

import android.app.Activity;

import android.os.Bundle;

import android.view.Gravity;

import android.view.View;

import android.widget.Button;

import android.widget.Toast;

public class TestToastActivity extends Activity {

private Button showtoast,closetoast;

private Toast toast;

private Field field;

private Object obj;

private Method showMethod,hideMethod;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

//初始化按鈕組件

showtoast = (Button)this.findViewById(R.id.showtoast);

closetoast = (Button)this.findViewById(R.id.closetoast);

//設置組件監聽

showtoast.setOnClickListener(new MyOnClickListener());

closetoast.setOnClickListener(new MyOnClickListener());

//創建Toast對象

toast = Toast.makeText(this, "Toast自定義顯示時間測試", 1);

toast.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL, 0, 0);

//利用反射技術拿到mTN對象

reflectionTN();

}

class MyOnClickListener implements View.OnClickListener{

@Override

public void onClick(View v) {

switch (v.getId()) {

case R.id.showtoast:

try {

showMethod.invoke(obj, null);//調用TN對象的show()方法,顯示toast

} catch (Exception e) {

e.printStackTrace();

}

break;

case R.id.closetoast:

try {

hideMethod.invoke(obj, null);//調用TN對象的hide()方法,關閉toast

} catch (Exception e) {

e.printStackTrace();

}

break;

default:

break;

}

}

}

private void reflectionTN() {

try {

field = toast.getClass().getDeclaredField("mTN");

field.setAccessible(true);

obj = field.get(toast);

showMethod = obj.getClass().getDeclaredMethod("show", null);

hideMethod = obj.getClass().getDeclaredMethod("hide", null);

} catch (Exception e) {

e.printStackTrace();

}

}

}
復制代碼

7. 如何在github上找到好的android項目源碼學習

完整的項目還是太少而且有點難,再分享個eoe上別人整理的開源項目集:Android精品開源項目整理,如果覺得項目還是難的話,還是先從控制項或部分功能的demo學起(Google也提供有Android的APIdemo),這樣或許會學得更快。

8. android是用什麼軟體開發的

Android編程的實現是基於Java語言實現的,開發時可以使用集成版的Eclipse,也可以使用Android Studio。下面,圖示兩種配置方式



工具/原料

Eclipse、SDK、AndroidStudio



方法/步驟

1、Eclipse集成ADT插件實現Android環境的搭建

(1)打開Eclipse,選擇Help-->Install New Software,如圖所示:

9. 求安卓Android手機上的的藍牙串口通訊源碼!!!!

http://code.eoe.cn/789?f_section=new
以上是地址 自己去下

熱點內容
python控制台亂碼 發布:2025-01-19 10:55:38 瀏覽:363
安卓鴻蒙蘋果哪個好用 發布:2025-01-19 10:32:33 瀏覽:264
正規物業保安怎麼配置 發布:2025-01-19 10:27:30 瀏覽:518
斷裂下載ftp 發布:2025-01-19 10:27:30 瀏覽:641
安卓導航怎麼調對比度 發布:2025-01-19 10:26:52 瀏覽:25
伺服器共享文件如何查看訪問記錄 發布:2025-01-19 10:08:55 瀏覽:400
datasourceSQL 發布:2025-01-19 10:01:25 瀏覽:838
aspnet網站的編譯 發布:2025-01-19 10:00:49 瀏覽:334
路特仕A9工廠密碼是多少 發布:2025-01-19 09:59:44 瀏覽:257
linux的命令find 發布:2025-01-19 09:42:55 瀏覽:174