小编sha*_*han的帖子

在Android中生成Pdf的缩略图

我想从pdf文件生成图像(缩略图),就像WhatsApp所做的那样,如下所示 WhatsApp的

我试过了

  1. PDFBox(https://github.com/TomRoush/PdfBox-Android)
  2. Tika(编译'org.apache.tika:tika-parsers:1.11')
  3. AndroidPdfViewer(https://github.com/barteksc/AndroidPdfViewer)

仍然无法找到从pdf生成图像的方法.


PDFBox的:

有一个github问题可以解决这个问题(https://github.com/TomRoush/PdfBox-Android/issues/3),但这仍然没有得到解决.

注意:我已成功使用PDFBOX从PDF中提取图像


AndroidPdfViewer:

Github问题(https://github.com/barteksc/AndroidPdfViewer/issues/49)

pdf android image pdfbox

19
推荐指数
2
解决办法
1万
查看次数

Smack 4.1重新连接问题

我正在开发一个聊天应用程序

  1. 我有一个持续运行的后台服务.
  2. 应用程序运行顺利,我能够毫无问题地接收和发送消息.
  3. 我正在使用默认的Smack 4.1重新连接管理器,它会在连接丢失后立即连接(几乎90%的时间).

但有时,当连接丢失时,Smack重新连接管理器停止工作.

我无法找出造成这个问题的原因.

当我检查我的手机后,经过12到14小时的延迟,我可以看到Android服务仍在运行,但XMPP重新连接已停止工作.然后我必须强制停止应用程序,然后重新启动服务并再次连接到XMPP服务器.

我的假设是当"电话网络从Wifi到数据或数据到Wifi"切换时.与此同时,Smack 4.1重新连接管理器停止工作.虽然,我不确定.

我有问题

  1. PingManager有什么用?PingManager在这种情况下可以提供帮助吗?
  2. 什么是StreamManagement?我该如何启用它?这种情况有用吗?

任何其他解决方案来解决这个问题?我在考虑以下解决方案:

  1. 要使用GCM以及XMPP,所以当XMPP无法重新连接时,我可以获得PUSH并在PUSH的基础上再次连接.
  2. 使用警报服务.(问题:由于连接丢失而在队列中的消息将取决于下一个警报计划)
  3. 每次用户返回应用程序时连接XMPP.(问题:因连接丢失而在队列中的消息将取决于用户返回应用程序)

java sockets android xmpp smack

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

没有获得从Playstore下载应用的用户的Firebase动态链接

Playstore App有2个案例

  1. 正常安装(Playstore显示OPEN按钮)
  2. 从动态链接安装(Playstore显示CONTINUE按钮) 打开

测试用例:

从Firebase动态链接下载应用程序,安装后Playstore将显示CONTINUE按钮:

成功安装后,用户可以通过2个选项打开应用程序.

  1. 单击继续按钮打开应用程序- > 应用程序将获取链接,一切正常工作
  2. LAUNCHER ICON打开应用程序,而不是从Playstore 打开应用程序- > App将无法获得动态链接

大多数用户没有点击CONTINUE按钮,因为这是正常的人类行为,因此我丢失了Referrer链接.

这是Firebase的预期行为吗?我该如何避免这个问题?

相关文章在这里

firebase firebase-invites firebase-dynamic-links

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

对齐文本语音气泡内的时间

我想实现此功能,如Android中的 WhatsApp 中所示。

\n\n

2个泡泡

\n\n

在这里,为了实现这一点,我对文本和时间使用了单独的TextView 放置相对布局内。

\n\n

我的问题是,WhatsApp 如何决定何时在换行符中移动时间,何时不移动。

\n\n

以下是 WhatsApp 的纵向和横向屏幕截图。

\n\n

纵向视图

\n\n

景观

\n\n

直觉是,代码一定是这样的。

\n\n
if(width_of_last_line_of_textview > some_fixed_value)\n    move time_textview to new-line;\nelse\n    make time_textview in-line;\n
Run Code Online (Sandbox Code Playgroud)\n\n

但我想知道这是否可以使用 xml 来完成(使用一些属性权重等)

\n\n

WhatsApp bubble 会根据每种屏幕尺寸进行自我调整,无论屏幕是横向还是纵向。

\n\n
\n\n

附件是 WhatsApp 用于文本气泡的布局。

\n\n

conversation_row_text_right.xml

\n\n
<?xml version="1.0" encoding="utf-8"?>\n<merge xmlns:android="http://schemas.android.com/apk/res/android" >\n\n<com.whatsapp.DividerView\n    android:id="@id/date_divider"\n    style="@style/DateDivider" />\n\n<LinearLayout\n    android:id="@id/main_layout"\n    android:layout_width="wrap_content"\n    android:layout_height="wrap_content"\n    android:layout_alignParentRight="true"\n    android:layout_below="@id/date_divider"\n    android:layout_marginLeft="40.0dip"\n    android:minHeight="30.0dip"\n    android:orientation="vertical" >\n\n    <FrameLayout\n        android:id="@id/web_page_preview_holder"\n        android:layout_width="wrap_content"\n        android:layout_height="wrap_content"\n        android:paddingBottom="4.0dip"\n        android:paddingLeft="8.0dip"\n        android:paddingRight="8.0dip"\n        android:paddingTop="8.0dip" />\n\n    <view\n        android:id="@id/text_content_layout"\n        android:layout_width="wrap_content"\n …
Run Code Online (Sandbox Code Playgroud)

xml user-interface android whatsapp

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

使用Smack Android将String转换为XMPP Stanza

要么

  • Q)从String生成XMPP Stanza.

  • Q)将字符串转换为XMPP Stanza.

在Android中使用Smack库,

Message message = new Message();
message.setStanzaId("123");
message.setFrom("923442621149");
message.setType(Message.Type.chat);
message.setBody("shanraisshan");

final String msgString = message.toXML().toString();
Log.e("message --->", msgString);
Run Code Online (Sandbox Code Playgroud)

上面的代码生成后面的节

msgString:

<message from='923442621149' id='123' type='chat'><body>shanraisshan</body></message>
Run Code Online (Sandbox Code Playgroud)

我已将此msgString保存到我的数据库中.

现在,我想要做的是,从数据库中检索此字符串

  • 将此msgString转换回Java Message Class
  • 这样我就可以使用属性(From,Body,Id)
  • 使用message.getFrom()

由于MessageStanza的子类,我尝试了以下代码:

Stanza stanza = new Stanza() {
    @Override
    public CharSequence toXML() {
        return msgString;
    }
};
Log.e("stanza XML --->", stanza.toXML().toString());
Log.e("stanza getFrom() ->", stanza.getFrom() + ":");
Log.e("stanza getStanzaId() ->", stanza.getStanzaId() + ":");
Run Code Online (Sandbox Code Playgroud)

控制台日志打印如下 …

java android xmpp smack asmack

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