我有一个由一个带有ImageView的布局组成的Android项目.
public class MainActivity extends AppCompatActivity {
/* original and stretched sized bitmaps */
private Bitmap bitmapOriginal;
private Bitmap bitmapStretched;
/* the only view */
private ImageView iv;
....
}
Run Code Online (Sandbox Code Playgroud)
此ImageView由此runnable函数更新
runnable = new Runnable() {
@Override
public void run() {
iv.setImageBitmap(bitmapStretched);
}
};
Run Code Online (Sandbox Code Playgroud)
runnable由一个临时JNI函数运行,在后台线程上运行,每秒调用60次.
public void jniTemporizedCallback(int buf[]) {
/* set data to original sized bitmap */
bitmapOriginal.setPixels(buf, 0, origWidth, 0, 0, origWidth, origHeight);
/* calculate the stretched one */
bitmapStretched = Bitmap.createScaledBitmap(bitmapOriginal, width, height, false);
/* tell the …
Run Code Online (Sandbox Code Playgroud) 我偶然发现了一个仅在Galaxy S5 mini上出现的奇怪行为.
假设我的应用程序有两个图像视图(ivA和ivB),它们之间有一个小的空白区域
+------------+---+--------------+
| | | |
| ivA | | ivB |
| | | |
+------------+---+--------------+
Run Code Online (Sandbox Code Playgroud)
我已经为这两个设置了onTouchListener
ivA.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent event) {
int action = event.getAction();
int idx = event.getPointerId(event.getActionIndex());
Log.i(TAG, "PRESSED ivA: " + action + " - IDX " + idx);
}
}
Run Code Online (Sandbox Code Playgroud)
然后我做这些动作:
我期待的是:
我得到了什么:
我想触摸屏驱动程序认为左手指向右移动而不是用第二根手指检测到第二次触摸.
在您看来,通过更新我的软件可以解决问题吗?
更新:我忘了说我试图扩大ivA和ivB之间的空白区域,它按预期工作.如果两次点击距离足够远,则驱动程序不会乱.
我是一名Android App开发人员,我遇到了以下崩溃报告(我每天有5/6):
native: pc 00000000000418e0 /system/lib/libc.so (tgkill+12)
native: pc 0000000000040d59 /system/lib/libc.so (pthread_kill+32)
native: pc 000000000001c7eb /system/lib/libc.so (raise+10)
native: pc 000000000001999d /system/lib/libc.so (__libc_android_abort+34)
native: pc 0000000000017550 /system/lib/libc.so (abort+4)
native: pc 0000000000008d53 /system/lib/libcutils.so (__android_log_assert+86)
native: pc 000000000006e2c3 /system/lib/libmedia.so (_ZN7android11ClientProxy13releaseBufferEPNS_5Proxy6BufferE+94)
native: pc 000000000006c11d /system/lib/libmedia.so (_ZN7android10AudioTrack13releaseBufferEPKNS0_6BufferE+112)
native: pc 000000000006c987 /system/lib/libmedia.so (_ZN7android10AudioTrack18processAudioBufferEv+1350)
native: pc 000000000006d7f3 /system/lib/libmedia.so (_ZN7android10AudioTrack16AudioTrackThread10threadLoopEv+194)
native: pc 0000000000010079 /system/lib/libutils.so (_ZN7android6Thread11_threadLoopEPv+112)
native: pc 000000000004065b /system/lib/libc.so (_ZL15__pthread_startPv+30)
native: pc 000000000001a021 /system/lib/libc.so (__start_thread+6)
Run Code Online (Sandbox Code Playgroud)
这些OpenSL
函数在JNI
世界中被调用.
这些都是存储在堆中的变量:
/* OpenSL ES audio stuff */
SLObjectItf …
Run Code Online (Sandbox Code Playgroud) 我在某些 Android 手机上使用某些图像视图时遇到问题。
似乎暗模式反转了某些资产的颜色(不是全部,似乎只有黑色/深灰色)
一个例子。
我找不到避免这种情况的方法。是否有某种属性可以保护图像不被反转?
看看这一小块Qt代码
qDebug() << "CONTENT" << content;
QTextEdit *te = new QTextEdit(this);
te->setHtml(content);
qDebug() << "CONTENT AFTER " << te->toHtml();
Run Code Online (Sandbox Code Playgroud)
内容最初包含此HTML
<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">
<html>
<head>
<meta name=\"qrichtext\" content=\"1\" />
<style type=\"text/css\"> p, li { white-space: pre-wrap; } </style>
</head>
<body style=\" font-family:'Calibri'; font-size:10pt; font-weight:400; font-style:normal;\">
<p style=\" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">
<span style=\" font-family:'Verdana'; color:#0b333c;\">MY TEXT</span>
</p>
</body>
</html>"
Run Code Online (Sandbox Code Playgroud)
......但输出te->toHtml()
是......
<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">
<html>
<head>
<meta name=\"qrichtext\" content=\"1\" …
Run Code Online (Sandbox Code Playgroud) 当清单文件中 android:hardwareAccelerated 设置为 false 时,我遇到的问题仅出现在最新的 Samsung Galaxy 系列中
据我所知(我自己尝试过),它会发生在 Galaxy S9、J6 和 Note 8 上,但不会发生在 Galaxy S8 上。其他手机似乎根本不受影响。
问题是我的 GLSurfaceView 不显示任何内容(黑屏),但如果我在活动之间切换,它会再次开始工作,我猜是因为它更新了视图而没有错误。
这是我发现的可疑日志行
01-13 14:39:47.813 25013 25080 E libEGL : eglCreateWindowSurface: native_window_api_connect (win=0xc166b808) failed (0xffffffed) (already connected to another API?)
01-13 14:39:47.813 25013 25080 E libEGL : eglCreateWindowSurface:679 error 3003 (EGL_BAD_ALLOC)
Run Code Online (Sandbox Code Playgroud)
这些是我的代码的关键部分:
GLSurf glsurf;
public void onPause() {
super.onPause();
// stop
if (glsurf != null) {
glsurf.onPause();
}
}
@Override
public void onResume() {
super.onResume();
if (glsurf != null)
glsurf.onResume(); …
Run Code Online (Sandbox Code Playgroud) 我需要设置一个反向shell,以便连接到通过GPRS调制解调器连接到互联网的设备.
当特殊情况发生时,我在具有固定IP的公共服务器上启动此命令
nc -l 65535
Run Code Online (Sandbox Code Playgroud)
那么我将使这个代码运行(现在我通过电缆直接连接到设备用于测试目的)(是的,在这种情况下,fork是无用的,但我将在最后的场景中需要它,所以我保持它)
#include <stdio.h>
#include <stdint.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
int reverse_shell()
{
pid_t p = 0;
/* fork */
p = fork();
if (p == 0)
{
char *shell[2];
int i,fd;
struct sockaddr_in sin;
/* open socket */
fd = socket(AF_INET, SOCK_STREAM, 0);
sin.sin_family = AF_INET;
sin.sin_addr.s_addr = inet_addr("MY SERVER PUBLIC IP ADDRESS");
sin.sin_port = htons(65535);
/* connect! */
connect(fd, (struct sockaddr *)&sin,sizeof(struct sockaddr_in));
/* assign three first fd …
Run Code Online (Sandbox Code Playgroud)