当前位置:首页 » 操作系统 » 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
以上是地址 自己去下

热点内容
php怎么反编译 发布:2025-01-19 14:10:54 浏览:590
加密货币交易平台排名 发布:2025-01-19 13:58:21 浏览:741
红绿灯的编程 发布:2025-01-19 13:57:37 浏览:113
老男孩linux教程 发布:2025-01-19 13:44:48 浏览:941
买车怎么区分车配置 发布:2025-01-19 13:44:45 浏览:242
丢失缓存视频 发布:2025-01-19 13:44:09 浏览:183
C语言tp 发布:2025-01-19 13:26:20 浏览:107
手机qq改变存储位置 发布:2025-01-19 13:25:17 浏览:83
吃解压海鲜 发布:2025-01-19 13:23:50 浏览:820
sql子表 发布:2025-01-19 13:23:11 浏览:334