小编Sag*_*han的帖子

通过本地Wi-Fi或蓝牙网络以编程方式从打印机打印文档

我必须在我的应用程序中提供打印选项以打印PDF文件.在这里,我列出了我的应用程序的要求:

  1. 互联网将无法打印.

  2. 它应该在A4尺寸的纸张上打印PDF文件.

  3. 需要进行适当的导航.意味着如果PDF打印成功,则需要显示消息.如果打印机不可用而不是消息需要显示.

    我已为此进行了研发,并找到了以下选项:

1)Google云打印 - Google云打印是一项Google服务,旨在允许网络云中任何设备上的任何支持云打印的应用程序打印到任何打印机

依赖关系: - 需要Internet连接

优点 - 易于设置 - 使用各种打印机

2)Epson Printer SDK Epson SDK旨在缩短从手持外围设备实施无线POS打印的移动POS应用所需的开发时间.

依赖性和限制 - 仅适用于Epson POS(销售点)打印机 - 外围设备必须支持ARMv5TE支持 - 如果设备在通过蓝牙与打印机通信时进入睡眠模式,则连接将丢失.

3)Zebra Printer SDK Zebra Multiplatform SDK包含为Zebra标签打印机开发应用程序所需的所有组件.

依赖性 - 仅适用于Zebra打印机.即,•手机:MZ™系列,QL Plus™系列,RW™系列,P4T™/ RP4T™打印机
•台式机:G系列™,HC100™,TLP/LP 2824 Plus™打印机•高性能/中档:Xi4™和XiIIIPlus™,PAX4™系列,ZM400™/ ZM600™,S4M™,105SL™打印机•RFID:RXi™系列,R110PAX4™,RZ400™/ RZ600™​​打印机•Kiosk:KR403™打印机

  • 支持的Android设备(使用Android v2.1或更高版本)•HTC®Desire™•HTC Evo™•HTC Nexus One™•LG™Ally™•Motorola ET1•Motorola®Droid™•Motorola XT701•Samsung®Cobtivate•Samsung P1000 Galaxy标签

4)使用STAR Printer SDK - StarIO SDK是一种高级编程工具,可简化Star打印机软件的开发和创建.

依赖关系 - 仅适用于POS Star Printers

5)将意图发送到其他应用程序 - 我们可以将Intent发送给其他人以打印文件.

依赖性 - 取决于第三方应用程序 - 如果需要安装HP打印机而不是ePrint应用程序,并且需要安装兄弟打印机而不是iPrint应用程序的人等.

通过查看可用的选项,我无法使用:

  • Google云打印,因为互联网不适用于应用

  • EpSON SDK因为它只支持POS打印机,但我必须在A4尺寸的纸张上打印PDF.此外,它的SDK仅支持ARMv5TE架构设备.

  • Star和Zebra SDK因为它们也只支持POS打印机
  • 意图,因为正确的导航是不可用的.意味着无法获得打印机当前状态,PSF打印成功或失败. …

printing android

13
推荐指数
1
解决办法
8290
查看次数

RxJava/Android:结合两个依赖的Observable的结果

我有两个Observables.

  1. Observable<A> getAObservable() 返回Observable A
  2. Observable<B> getBObservable(A) 返回'B'的Observable.

这里Observable<A>应该先执行,Observable<B>以便它可以将结果传递AgetBObservable()方法.现在一旦Observable<B>完成,我需要结合这些结果observableObservable<AB>返回.

试用的选项:

  1. 对其Observable<A>应用并应用flatMap,以便将其转换为结果B.现在,此时我无法访问A数据.因此我无法返回Observable

    1. 我可以使用zip,这样一旦我得到两者的结果Observable<A>Observable<B>,我可以结合自己的结果 AB.但是在这里我无法设置Observable<A>之前应该执行的依赖项,Observable<B>而且我无法将结果传递 Observable<A>Observable<B>

代码库:

public class Data {

    A a = new A();
    public Observable<AB> getABContext() {
        A a = new A();

        return getAObservable()
                .flatMap(new Func1<A, Observable<AB>>() {
                    @Override
                    public Observable<AB> call(final A a) …
Run Code Online (Sandbox Code Playgroud)

java android reactive-programming rx-java rx-android

11
推荐指数
1
解决办法
2267
查看次数

前景服务从奥利奥被杀

我编写了一个前台服务,它适用于低于Oreo的所有操作系统版本.从Oreo开始,应用程序流程在关闭5分钟后被杀死,并从最近删除应用程序.

根据android开发人员文档中的后台执行限制, 操作系统不应该终止正在运行前台服务的应用程序,并且通知窗口中会显示通知.

根据开发人员文档的指导原则.我按照以下步骤启动前台服务.

  1. 前台服务以startForegroundService()方法开始
  2. 在启动服务后的5秒内,将显示使用该服务的通知 startForeground()
  3. 返回START_STICKYonStartCommand()service

我在以下手机上遇到此问题:

  1. OnePlus 5T
  2. 体内
  3. OPPO

我试图阻止前台服务被破坏?

  1. 通过向用户显示系统对话框以禁用打盹模式,禁用应用程序的电池优化.

我试图重启前台服务?

  1. 用于AlarmManager从onTaskRemoved()重新启动服务.请查看此链接了解详情.

根据我的理解,这些制造商已经定制了AOSP,并且不遵守允许前台服务运行的操作系统指南.可能这些制造商已经做到了这一点,因为它给用户带来了很长的电池续航时间

前台服务课

    class DataCaptureService : Service() {

        private var isServiceStarted = false

        override fun onBind(intent: Intent?): IBinder? {
            return null
        }

override fun onCreate() {
        super.onCreate()
        wakeLock = (getSystemService(Context.POWER_SERVICE) as PowerManager).run {
                    newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "WakelockTag123").apply {
                        acquire()
                    }
                }
    }


        override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int …
Run Code Online (Sandbox Code Playgroud)

android android-source android-service

11
推荐指数
3
解决办法
6735
查看次数

如何使用Facebook登录从Android应用程序中的后端服务器访问数据?

我正在开发一个应用程序,我必须使用facebook登录从我的后端服务器访问数据.我搜索了这个并得到了:

  1. 首先,用户将输入facebook的用户名和密码,然后请求进入服务器.
  2. 如果用户通过身份验证,则获取用户的访问令牌.
  3. 在服务器上发送此访问令牌.
  4. 服务器将验证此访问令牌.

我已成功将我的应用程序与Facebook连接,即现在用户可以从我的应用程序登录到Facebook.但我现在不知道如何获取用户的访问令牌以及如何在服务器上验证此访问令牌.

你能为我提供一些示例代码吗?请帮助我,我很长时间陷入其中.

android facebook facebook-graph-api

7
推荐指数
1
解决办法
3219
查看次数

即使在获得许可后也始终获得NEED_PERMISSION异常

我正在使用Google云端硬盘跨客户端身份,以便当用户向我的Android应用授予驱动器访问权限时,我的网络服务器也可以访问用户Google云端硬盘.

首先,我必须获得授权码.为此,我使用以下代码:

private String getAccessToken(Context mContext) {
      String SERVER_CLIENT_ID = "1009999994.apps.googleusrcontent.com";
      String scopes = "oauth2:server:client_id:"+SERVER_CLIENT_ID+":api_scope:"+DriveScopes.DRIVE;
      String accessToken = null;

      try {
        accessToken = GoogleAuthUtil.getToken(mContext, accountName, scopes); 
        Log.d("token is:", "token:"+accessToken);
    } catch (UserRecoverableAuthException e) {

        e.printStackTrace();
    } catch (IOException e) {

        e.printStackTrace();
    } catch (GoogleAuthException e) {

        e.printStackTrace();
    } catch (Exception e) {
        e.printStackTrace();
    }

      return accessToken;
  }
Run Code Online (Sandbox Code Playgroud)

这是我在Logcat中遇到的异常:

   07-20 12:12:10.210: W/GLSActivity(29164): [qq] Status from wire: INVALID_SCOPE status: INVALID_SCOPE
    07-20 12:12:12.453: W/System.err(29037): com.google.android.gms.auth.GoogleAuthException: INVALID_SCOPE
    07-20 12:12:12.492: W/System.err(29037):    at com.google.android.gms.auth.GoogleAuthUtil.getToken(Unknown Source)
    07-20 …
Run Code Online (Sandbox Code Playgroud)

android google-drive-api google-oauth

1
推荐指数
1
解决办法
8337
查看次数