我必须在我的应用程序中提供打印选项以打印PDF文件.在这里,我列出了我的应用程序的要求:
互联网将无法打印.
它应该在A4尺寸的纸张上打印PDF文件.
需要进行适当的导航.意味着如果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™打印机
4)使用STAR Printer SDK - StarIO SDK是一种高级编程工具,可简化Star打印机软件的开发和创建.
依赖关系 - 仅适用于POS Star Printers
5)将意图发送到其他应用程序 - 我们可以将Intent发送给其他人以打印文件.
依赖性 - 取决于第三方应用程序 - 如果需要安装HP打印机而不是ePrint应用程序,并且需要安装兄弟打印机而不是iPrint应用程序的人等.
通过查看可用的选项,我无法使用:
Google云打印,因为互联网不适用于应用
EpSON SDK因为它只支持POS打印机,但我必须在A4尺寸的纸张上打印PDF.此外,它的SDK仅支持ARMv5TE架构设备.
我有两个Observables.
Observable<A> getAObservable() 返回Observable AObservable<B> getBObservable(A) 返回'B'的Observable.这里Observable<A>应该先执行,Observable<B>以便它可以将结果传递A给getBObservable()方法.现在一旦Observable<B>完成,我需要结合这些结果observable并Observable<AB>返回.
试用的选项:
对其Observable<A>应用并应用flatMap,以便将其转换为结果B.现在,此时我无法访问A数据.因此我无法返回Observable
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) 我编写了一个前台服务,它适用于低于Oreo的所有操作系统版本.从Oreo开始,应用程序流程在关闭5分钟后被杀死,并从最近删除应用程序.
根据android开发人员文档中的后台执行限制, 操作系统不应该终止正在运行前台服务的应用程序,并且通知窗口中会显示通知.
根据开发人员文档的指导原则.我按照以下步骤启动前台服务.
startForegroundService()方法开始startForeground()START_STICKY从onStartCommand()的service我在以下手机上遇到此问题:
我试图阻止前台服务被破坏?
我试图重启前台服务?
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) 我正在开发一个应用程序,我必须使用facebook登录从我的后端服务器访问数据.我搜索了这个并得到了:
我已成功将我的应用程序与Facebook连接,即现在用户可以从我的应用程序登录到Facebook.但我现在不知道如何获取用户的访问令牌以及如何在服务器上验证此访问令牌.
你能为我提供一些示例代码吗?请帮助我,我很长时间陷入其中.
我正在使用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)