当前位置:操作系统 > 安卓/Android >>

Android无线连接打印第三方开发的实现

[java] 
<span style="font-size:18px;"></span>  
         最近在做关于Android的项目,Android果然不是出于国内,很多东西都是国外已经成熟了或者已经开发好了,国内去效仿。为了找关于Android无线连接打印机并打印的第三方开发方案都非常的困难。由于最近项目需要用到这一块,经过我的组员的努力,找到了一种解决方案,为了能够和大家分享一下,也为了自己以后的参考,在这里稍作总结一下。经验有限,希望有更好方案的可以不吝赐教,我也会在以后的学习中不断修缮自己的方案。
        为了便于大家的参考,本文涉及到的所有的相关工程文件都在本人的csdn下载部分有相关资料下载。
       1.背景:
               很多开发者在工作上或者学习中可能需要通过基于Android系统的手机或者平板终端连接打印机,并驱动打
       印机打印自己发送的图片或者文本。本篇博客主要致力于解决这个问题。
       2.方案:
               本方案需要在android系统中安装一个软件send2print,在我的csdn下载频道中有相应的中文破解版下载链
        接,然后再写自己的程序,来调用其接口进行打印。事先需要在send2print中配置好默认打印机,我们写的程序
        就是调用其默认打印机进行无线打印。
                    这个软件可以安装直接使用,可以搜索开着无线的打印机,并连接进行打印,目前只有国外有卖该产品,
        国内网上可以下载汉化版,我的csdn下载中也有。汉化版有一定的缺陷,经过测试,佳能产品的大部分型号
        都无法实现打印,但是HP LaserJet 1536dnf MFP可以实现打印。
        4.代码实现                我也不想贴代码,但是,安装好之后,配置上默认打印机,你只需要两个类就可以轻松实现无线打印了,
        由于代码量不大,也很容易看懂,我就直接贴在下面了,如果需要测试打印的资源文件可以到我csdn下载频道
        下载,这该死的博客怎么没有直接上传资源功能,还是我没有发现啊,谁发现了告诉我一声啊,嘿嘿。
                PrintUtils.java
              
[html] 
package com.rcreations.testprint; 
 
import java.io.File; 
import java.io.FileOutputStream; 
import java.io.IOException; 
import java.io.OutputStream; 
 
import android.app.Activity; 
import android.app.AlertDialog; 
import android.content.Context; 
import android.content.DialogInte易做图ce; 
import android.content.Intent; 
import android.content.pm.PackageInfo; 
import android.content.pm.PackageManager; 
import android.graphics.Bitmap; 
import android.graphics.Picture; 
import android.net.Uri; 
import android.os.Environment; 
import android.util.Log; 
 
 
 
public class PrintUtils 

    // for logging 
    private static final String TAG = PrintUtils.class.getSimpleName(); 
 
    // Send 2 Printer package name 
    private static final String PACKAGE_NAME = "com.rcreations.send2printer"; 
     
    // intent action to trigger printing 
    public static final String PRINT_ACTION = "com.rcreations.send2printer.print"; 
 
    // content provider for accessing images on local sdcard from within html content 
    // sample img src shoul be something like /2012/0821/20120821021535608.gif" 
    public static final String LOCAL_SDCARD_CONTENT_PROVIDER_PREFIX = "content://s2p_localfile"; 
 
     
    /** 
     * Returns true if "Send 2 Printer" is installed.  
     */ 
    public static boolean isSend2PrinterInstalled( Context context ) 
    { 
        boolean output = false; 
        PackageManager pm = context.getPackageManager(); 
        try {  
            PackageInfo pi = pm.getPackageInfo( PACKAGE_NAME, 0 ); 
            if( pi != null ) 
            { 
                output = true; 
            } 
        } catch (PackageManager.NameNotFoundException e) {} 
        return output; 
    } 
     
     
    /** 
     * Launches the Android Market page for installing "Send 2 Printer" 
     * and calls "finish()" on the given activity. 
     */ 
    public static void launchMarketPageForSend2Printer( final Activity context ) 
    { 
        AlertDialog dlg = new AlertDialog.Builder( context ) 
        .setTitle("Install Send 2 Printer") 
        .setMessage("Before you can print to a network printer, you need to install Send 2 Printer from the Android Market.") 
        .setPositiveButton( android.R.string.ok, new DialogInte易做图ce.OnClickListener() { 
            @Override 
            public void onClick( DialogInte易做图ce dialog, int which ) 
            { 
                // launch browser 
                Uri data = Uri.parse( "http://market.android.com/search?q=pname:" + PACKAGE_NAME ); 
                Intent intent = new Intent( android.content.Intent.ACTION_VIEW, data ); 
                intent.setFlags( Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP ); 
                context.startActivity( intent ); 
  &nbs

补充:移动开发 , Android ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,