文档章节

如何从Windows应用发送通知消息给Android应用

yushulx
 yushulx
发布于 2014/10/13 13:57
字数 478
阅读 125
收藏 6

手机应用可以作为桌面应用的辅助工具,用来接收桌面应用的状态信息。这里介绍如何实现一个简单的Android程序用于接收Windows扫描仪应用的工作状态。

参考:How to Push Notifications to Android Applications from Windows

思路

  1. 创建socket连接用于应用通信

  2. Android上启动后台服务,用于接收信息

  3. 在收到信息之后,后台服务会把推送消息发送给Android应用

Socket信息发送

使用TCPListener来创建socket连接,相关内容可以参考:Wireless TWAIN Document Scanning on Android

启动停止Android Service

创建服务NotificationService

public class NotificationService extends Service {
 
    @Override
    public void onCreate() {
    }
 
    @Override
    public void onDestroy() {
    }
 
    @Override
    public IBinder onBind(Intent intent) {
        return mBinder;
    }
 
    private final IBinder mBinder = new Binder() {
        @Override
        protected boolean onTransact(int code, Parcel data, Parcel reply,
                int flags) throws RemoteException {
            return super.onTransact(code, data, reply, flags);
        }
    };
}
 

AndroidManifest.xml中申明一下这个service:

<
service android:name = "com.dynamsoft.twain.NotificationService" 
/>

onCreate(Bundle)中启动服务:

startService(new Intent(ScanAssist.this, NotificationService.class));

onDestroy()中停止服务:

stopService(new Intent(ScanAssist.this, NotificationService.class));

推送Android通知

调用NotificationManager

private NotificationManager mNM = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);

创建用于内容显示的Activity IncomingMessageView

public class IncomingMessageView extends Activity {
 
    public static final String KEY_FROM = "from";
    public static final String KEY_MESSAGE = "message";
    public static final int NOTIFICATION_ID = R.layout.activity_main;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        TextView view = new TextView(this);
        view.setText(getIntent().getCharSequenceExtra(KEY_FROM) + ": " + getIntent().getCharSequenceExtra(KEY_MESSAGE));
 
        setContentView(view);
 
        NotificationManager nm = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
        nm.cancel(NOTIFICATION_ID);
    }
}
 

AndroidManifest.xml中申明Activity:

<activity
            android:name="com.dynamsoft.twain.IncomingMessageView"
            android:label="@string/app_name" >
</activity>
 

发送消息,并显示在状态栏上:

Intent notifyIntent = new Intent(this, IncomingMessageView.class);
notifyIntent.putExtra(IncomingMessageView.KEY_FROM, from);
notifyIntent.putExtra(IncomingMessageView.KEY_MESSAGE, message);
 
PendingIntent pendingIntent =
        PendingIntent.getActivity(
        this,
        0,
        notifyIntent,
        PendingIntent.FLAG_ONE_SHOT
);
 
Notification notif = new Notification.Builder(this)
.setContentTitle("TWAIN Scanner Status ")
.setContentText(message)
.setSmallIcon(R.drawable.ic_launcher)
.setContentIntent(pendingIntent)
.setTicker(message)
.build();
 
notif.defaults = Notification.DEFAULT_ALL;
 
mNM.notify(IncomingMessageView.NOTIFICATION_ID, notif);
 

用例

  1. 运行Android应用,启动服务

  2. 应用切换到后台,操作其它应用,比如打开浏览器

  3. 在Windows上操作应用,点击文件扫描

  4. 扫描成功之后,信息发送到手机

源码

https://github.com/DynamsoftRD/ScanAssist

git clone https://github.com/DynamsoftRD/ScanAssist.git


本文转载自:http://www.codepool.biz/android-programming

共有 人打赏支持
yushulx
粉丝 26
博文 92
码字总数 52955
作品 0
杭州
私信 提问
Android消息推送完美方案

推送功能在手机应用开发中越来越重要,已经成为手机开发的必须。在Android应用开发中,由于众所周知的原因,Android消息推送我们不得不大费周折。本文就是用来和大家共同探讨一种Android消息...

Yujan
2014/04/10
0
0
通过PhoneGap在Android上去推送通知

需求 必备知识 这篇文章至少需要有过一个中等层次的PhoneGap的开发经验 必须产品 PhoneGap Build 用户级 全部适用 我上一篇文章是通过PhoneGap能够在苹果设备上推送通知。在这篇文章中,我将...

james_laughing
2014/12/18
0
0
Android 窗口是如何创建的?

前言 在WmS看来窗口并不是Window类,而是一个View类。WmS收到用户消息后,需要把消息发送到窗口,View类其实并不能直接接受传递过来的消息,而接受消息的必须是IWindow类,实现IWindow类的是...

墨镜猫
2016/12/29
0
0
安卓应用安全指南 4.10 使用通知

4.10 使用通知 原书:Android Application Secure Design/Secure Coding Guidebook 译者:飞龙 协议:CC BY-NC-SA 4.0 Android 提供用于向最终用户发送消息的通知功能。 使用通知会使一个称为...

apachecn_飞龙
03/24
0
0
Android推送通知指南

在开发Android和iPhone应用程序时,我们往往需要从服务器不定的向手机客户 端即时推送各种通知消息,iPhone上已经有了比较简单的和完美的推送通知解决方案,可是Android平台上实现起来却相对...

LiSteven
2013/03/28
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Nginx/Apache/PHP Hidden Version Number

nginx隐藏版本号的方法 在nginx配置文件nginx.conf中,加入以下代码: server_tokens off; apache隐藏版本号的方法 在apache配置文件httpd.conf中,加入以下代码: ServerTokens ProdServer...

Linux就该这么学
12分钟前
1
0
iOS 滚动视图 UIScrollView 代理方法 相关属性 状态栏 滚动条 回弹 弹簧效果

iOS 滚动视图 UIScrollView 代理方法 相关属性 状态栏 滚动条 回弹 弹簧效果 #import "ViewController.h"@interface ViewController () <span style="color:#ff0000;"><UIScrollViewDel......

壹峰
18分钟前
0
0
【转】Hive 工作原理详解

什么是Hive? Hive是建立在 Hadoop 上的数据仓库基础构架。它提供了一系列的工具,可以用来进行数据提取转化加载(ETL),这是一种可以存储、查询和分析存储在 Hadoop 中的大规模数据的机制。...

hnairdb
18分钟前
2
0
开源 java CMS - FreeCMS2.8 微信管理 公众号设置

项目地址:http://www.freeteam.cn/ 公众号设置 管理员可以在这里设置微信公众号的相关配置,每个站点都可设置自己的微信公众号。 其中接口URL需要配置在微信公众号中,如下图所示 App Key ...

freeteam
20分钟前
2
0
MySQL中 replace 函数应用

将以下字段中的【忻州】替换为【洛阳】 Sql语句如下 UPDATE sys_organization SET org_name = REPLACE(org_name,'忻州','洛阳'); 执行结果如下...

karma123
22分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部