- 浏览: 1220587 次
- 性别:
- 来自: 荆州
文章分类
- 全部博客 (396)
- Android 基础 (72)
- Java 基础 (42)
- Android(动画效果) (26)
- Android(自定义组件) (13)
- Android(手机服务) (38)
- Android(网络相关) (27)
- Android(多媒体) (12)
- Android(小技巧) (30)
- Android(用户界面) (39)
- 基础概念 (24)
- Android组件学习 (21)
- Android数据库相关 (11)
- 生活杂谈 (10)
- 调试技巧部分 (8)
- Sql Server相关 (1)
- Android(xml相关) (2)
- Android 开发 (12)
- 韩语学习 (4)
- Mac添加环境变量的三种方法 (1)
- iPhone开发 (1)
- Android Studio (1)
最新评论
-
ppfbsar:
下载网络文件到SD卡上 -
851228082:
好文!彻底理解单类型导入与按需导入的区别了。还有一点可以通过 ...
谈java的导入(import) -
麦田的设计者:
老乡啊
sqlite 数据库保存图片 -
sf_dream:
我要是读写list、map之类的集合呢
ObjectOutputStream和ObjectInputStream类的学习 -
xfyunyun:
博主,请问webview加载html字符串时怎么进行缓存处理呢 ...
WebView使用总结2(加载HTML内容形式的String)
1.Activity的类别文件:
2.服务的类:
最后是配置文件和main.xml,每个Service都需要在配置文件里申明标签:
package wyf.wpf;//声明包语句 import android.app.Activity; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.TextView; //继承自Activity的子类 public class Sample_3_6 extends Activity { public static final int CMD_STOP_SERVICE = 0; Button btnStart;// 开始服务Button对象应用 Button btnStop;// 停止服务Button对象应用 TextView tv;// TextView对象应用 DataReceiver dataReceiver;// BroadcastReceiver对象 @Override public void onCreate(Bundle savedInstanceState) {// 重写onCreate方法 super.onCreate(savedInstanceState); setContentView(R.layout.main);// 设置显示的屏幕 btnStart = (Button) findViewById(R.id.btnStart); btnStop = (Button) findViewById(R.id.btnStop); tv = (TextView) findViewById(R.id.tv); btnStart.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent myIntent = new Intent(Sample_3_6.this, wyf.wpf.MyService.class); startService(myIntent);// 发送Intent启动Service } }); btnStop.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent myIntent = new Intent(); myIntent.setAction("wyf.wpf.MyService"); myIntent.putExtra("cmd", CMD_STOP_SERVICE); sendBroadcast(myIntent);// 发送广播 } }); } private class DataReceiver extends BroadcastReceiver {// 继承自BroadcastReceiver的子类 @Override public void onReceive(Context context, Intent intent) {// 重写onReceive方法 double data = intent.getDoubleExtra("data", 0); tv.setText("Service的数据为:" + data); } } @Override protected void onStart() {// 重写onStart方法 dataReceiver = new DataReceiver(); IntentFilter filter = new IntentFilter();// 创建IntentFilter对象 filter.addAction("wyf.wpf.Sample_3_6"); registerReceiver(dataReceiver, filter);// 注册Broadcast Receiver super.onStart(); } @Override protected void onStop() {// 重写onStop方法 unregisterReceiver(dataReceiver);// 取消注册Broadcast Receiver super.onStop(); } }
2.服务的类:
package wyf.wpf;//声明包语句 import android.app.Service; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.os.IBinder; //继承自Service的子类 public class MyService extends Service { CommandReceiver cmdReceiver; boolean flag; @Override public void onCreate() {// 重写onCreate方法 flag = true; cmdReceiver = new CommandReceiver(); super.onCreate(); } @Override public IBinder onBind(Intent intent) {// 重写onBind方法 // TODO Auto-generated method stub return null; } @Override public int onStartCommand(Intent intent, int flags, int startId) {// 重写onStartCommand方法 IntentFilter filter = new IntentFilter();// 创建IntentFilter对象 filter.addAction("wyf.wpf.MyService"); registerReceiver(cmdReceiver, filter);// 注册Broadcast Receiver,后续会接收相关广播intent doJob();// 调用方法启动线程 return super.onStartCommand(intent, flags, startId); } // 方法: public void doJob() { new Thread() { public void run() { while (flag) { try {// 睡眠一段时间 Thread.sleep(1000); } catch (Exception e) { e.printStackTrace(); } Intent intent = new Intent();// 创建Intent对象 intent.setAction("wyf.wpf.Sample_3_6"); intent.putExtra("data", Math.random()); sendBroadcast(intent);// 发送广播 } } }.start(); } private class CommandReceiver extends BroadcastReceiver {// 继承自BroadcastReceiver的子类 @Override public void onReceive(Context context, Intent intent) {// 重写onReceive方法 int cmd = intent.getIntExtra("cmd", -1);// 获取Extra信息 if (cmd == Sample_3_6.CMD_STOP_SERVICE) {// 如果发来的消息是停止服务 flag = false;// 停止线程 stopSelf();// 停止服务 } } } @Override public void onDestroy() {// 重写onDestroy方法 this.unregisterReceiver(cmdReceiver);// 取消注册的CommandReceiver super.onDestroy(); } }
最后是配置文件和main.xml,每个Service都需要在配置文件里申明标签:
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="wyf.wpf" android:versionCode="1" android:versionName="1.0"> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".Sample_3_6" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <service android:name=".MyService" android:process=":remote"> <intent-filter> <action android:name="wyf.wpf.MyService" /> </intent-filter> </service> </application> <uses-sdk android:minSdkVersion="7" /> </manifest>
<?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"> <Button android:id="@+id/btnStart" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="启动服务" /> <Button android:id="@+id/btnStop" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="停止服务" /> <TextView android:id="@+id/tv" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="等待来自Service的数据" /> </LinearLayout>
发表评论
-
GPS定位
2013-04-24 21:25 1872这几天一直在完善GPS定位的问题,现将分享在这里,后面在继续编 ... -
获取正在运行的进程
2012-03-05 15:57 1453public boolean isAppOnForegro ... -
Android条形码
2011-08-10 14:48 1796项目中需要使用到条形码的识别功能模块,今天研究了几个小时,找到 ... -
Android应用发送邮件
2011-06-09 13:03 1837package com.example; impor ... -
Android 程序获取、设置铃声、音量、静音、扬声器
2011-04-07 22:07 4329Android 程序获取、设置铃声和音量 通过程序获取and ... -
关于屏幕解锁的实例
2011-04-07 22:05 4369AndroidManifest.xml加两个权限 &l ... -
群导入数据到手机通讯录
2011-03-18 14:09 12461.核心代码: private Uri inser ... -
应用获取手机本地图片资源
2011-03-18 12:42 1597private Button mGetImg; / ... -
Android 系统广播Action一览验证
2011-02-14 13:04 4196下面我们一个一个的进行说明: 1.android.intent ... -
Android中读取properties文件2
2011-01-20 13:24 2397ReadProperty.java类文件中主要代码块: v ... -
获取SdCard和系统存储空间大小
2011-01-20 10:33 1345/** * 读取Sd卡存储信息 */ void re ... -
Sensor重力感应概念
2010-12-31 23:38 1198以屏幕的左下方为原点(2d编程的时候,是 ... -
接收短信启动相应服务
2010-11-21 09:05 12801.首先是在配置文件中申明一个Receiver: & ... -
模拟发送短信及步骤
2010-09-19 13:25 15811.发送短信的主要代码: String mobile ... -
模拟拨号及步骤
2010-09-19 12:46 18251.通过下面代码进行拨号操作: //当然这里的5556 ... -
代码创建LinearLayout,Services监听线程
2010-09-13 10:18 20671.主Activity: private TextView ... -
ListView显示正在运行的应用
2010-09-10 16:53 1331/* ActivityManager对象向系统取得ACTI ... -
手机服务方面的小技巧集合
2010-09-10 16:30 11521.调用系统拨号页面: /* 调用拨号的画面 */ ... -
ListView显示SIM相关信息
2010-09-10 14:34 1190private TelephonyManager telM ... -
Android获取手机号码(问题)
2010-08-31 13:27 12414手机号码不是所有的都能获取。只是有一部分可以拿到。这个 ...
相关推荐
总结起来,实现“android蓝牙demo实现通讯功能”涉及的关键技术点包括:BroadcastReceiver监听蓝牙状态变化,Service处理蓝牙连接和数据传输,以及Activity与Service之间的通信。通过学习这些内容,你可以构建一个...
Android 应用由四大组件构成:Activity、Service、BroadcastReceiver 和 ContentProvider。它们之间的通信是Android应用设计的核心。 1. **Intent**:Intent 是组件间通信的主要手段,它可以启动一个Activity或...
本"Android即时通讯demo.zip"包含了一个基于Java的示例项目,它提供了如何在Android上搭建即时通讯系统的基础框架。下面我们将详细探讨相关的知识点。 1. **Android SDK和开发环境** - Android Studio是Google提供...
6. **示例用法**:可能包含一个简单的Activity或Service,演示如何在应用程序中启动和使用串口通信功能。 通过这个"android 串口通讯demo",开发者可以学习到如何在Android应用中设置并控制串口,以及如何使用JNI...
在这个声波通讯demo中,可能需要声明使用麦克风和扬声器的权限,例如: ```xml ``` `src`目录包含项目的源代码,通常分为多个包(package),每个包内有对应的类文件。在声波通讯中,可能会有一个专门处理声波...
"AIDLDemo"可能包含服务端接口定义(.aidl文件)及对应的实现,客户端的调用代码,以及必要的Activity或Service来启动和管理服务。而"AIDLDemoGet"可能是一个具体的功能模块,用于从服务端获取数据。 在实际操作中...
1. **模块化(Module)**:模块是应用的基本构建单元,每个模块都有明确的功能,如:Activity、Service、BroadcastReceiver等。模块之间通过接口进行通信,降低耦合度。 2. **依赖注入(Dependency Injection, DI)...
项目是Android应用,因此会涉及到Android SDK、Android Studio的使用,以及对Android的四大组件(Activity、Service、BroadcastReceiver、ContentProvider)的理解。开发者需要熟悉XML布局、Java或Kotlin编程语言,...
压缩包中的文件"webrtc_demo"很可能包含了上述所有步骤的实现代码,包括Activity、Service、BroadcastReceiver等组件的使用,以及必要的媒体处理类(如VideoCapturer、VideoSource、VideoTrack等)和网络信令处理类...
本篇文章将深入探讨“服务通信方案总结”,主要包括服务端的实现、客户端通过AIDL(Android Interface Definition Language)进行进程间通信、Activity与Service之间的通信以及Parcel的使用和接口回调机制。...
EventBus常用于组件间的通信,例如Activity、Fragment、Service之间的数据传递,以及网络请求完成后的通知等。 10. **DEMO解析** 该DEMO可能包含了一个简单的Android项目,展示了如何集成EventBus,包括注册、...
在构建LumaQQ for Android Demo时,开发者需要掌握Android应用的基本架构,包括Activity、Service、BroadcastReceiver和ContentProvider等核心组件。此外,对于UI界面的设计,需使用XML布局文件和Java代码进行交互...
3. **配置文件**:如AndroidManifest.xml,只包含必要的权限声明和Activity、Service等组件。 4. **依赖库**:云信SDK的核心库,可能已经过裁剪,仅保留聊天功能所需的组件。 5. **示例代码**:用于展示如何初始化...
综上所述,`LocalService` 是一个自定义服务,用于在应用的各个组件之间进行内部通信。结合`Notification` 和适当的配置,可以在应用退出后依然接收并处理消息,即使设备被锁定,也能通过点亮屏幕和显示通知来提醒...
1. `AndroidManifest.xml`:应用配置文件,声明权限、活动(Activity)、服务(Service)等。 2. `MainActivity.java`:主活动类,可能包含登录、聊天界面的初始化。 3. `XMPPConnection.java`:使用Smack库建立和...
【Android Openfire Demo详解】 Openfire是一款开源的即时通讯服务器软件...通过以上知识点的学习和实践,开发者可以构建出一个功能完备、用户体验良好的Android Openfire Demo,为即时通讯应用的开发打下坚实的基础。
5. `AndroidManifest.xml`:这是Android应用的核心配置文件,包含了应用的基本元数据、权限声明、活动(Activity)、服务(Service)、广播接收器(Broadcast Receiver)和内容提供者(Content Provider)的定义。...
因此,这个Demo可能基于容联云通讯的SDK,包含了它们提供的服务和技术。 在【压缩包子文件的文件名称列表】中,我们只有一个文件"YTX_Android_Full_Demo",这很可能是整个项目的源代码目录,包含以下几个部分: 1....
本篇文章将深入探讨如何使用Messenger实现Android多进程通讯,以及其背后的原理和实践应用。 首先,让我们了解什么是Messenger。Messenger是Android中的一个类,它基于Binder机制,用于在不同进程间传递消息。与...
在Android中,由于安全性和权限限制,通常需要在主线程之外(例如在一个后台线程或Service中)创建ServerSocket。 2. **客户端连接**:在客户端,我们使用Socket类的构造函数,传入服务器的IP地址和端口号,尝试...