Articles of java的

JNI:从C代码到Java和JNI

背景 我正在开发eclipse中的android应用程序,现在我遇到了问题,我需要你的帮助。 所以我必须从JAVA应用程序调用C编写的函数。 但是在我编写代码的过程中,我有一些问题 ,你可以在下面看到。 我在等你的答案和想法…… C代码: typdef struct blobData_s { unsigned long length; unsigned char data[1]; } blobData_t; unsigned int CheckEnrollmentExist ( unsigned long hdevice, blobData_t* pInputInfo ) { // Function code goes here …………………….. return some_value; } JAVA代码: 在JAVA代码而不是unsigned long我使用int所以我可以写。 class jblobData_c { public int langth; *Question 1.* } public class ApplicationMainClass extends […]

Java SE和Android平台中的不同正则expression式结果

我有以下Java SE代码,它在PC上运行 public static void main(String[] args) { // stringCommaPattern will change // “,”abc,def”,” // to // “,”abcdef”,” Pattern stringCommaPattern = Pattern.compile(“(\”,\”)|,(?=[^\”[,]]*\”,\”)”); String data = “\”SAN\”,\”Banco Santander, \”,\”NYSE\””; System.out.println(data); final String result = stringCommaPattern.matcher(data).replaceAll(“$1”); System.out.println(result); } 我得到了预期的结果 “SAN”,”Banco Santander, “,”NYSE” “SAN”,”Banco Santander “,”NYSE” 但是,来到Android时 。 Pattern stringCommaPattern = Pattern.compile(“(\”,\”)|,(?=[^\”[,]]*\”,\”)”); String data = “\”SAN\”,\”Banco Santander, \”,\”NYSE\””; […]

打开Hardwareacceleration的NullPointerException?

我通过简单的按钮点击我的应用程序收到一些错误消息。 点击animation应该开始,但按钮变大。 它在大多数设备上运行完美,但在某些设备上(我认为大多数是4.X及以上)它会崩溃。 exception消息(堆栈跟踪): java.lang.NullPointerException at android.view.GLES20RecordingCanvas.drawBitmap(GLES20RecordingCanvas.java:118) at android.graphics.drawable.BitmapDrawable.draw(BitmapDrawable.java:400) at android.view.View.draw(View.java:10999) at android.view.ViewGroup.drawChild(ViewGroup.java:3186) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2788) at android.view.ViewGroup.drawChild(ViewGroup.java:3184) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2788) at android.view.ViewGroup.drawChild(ViewGroup.java:3184) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2788) at android.view.ViewGroup.drawChild(ViewGroup.java:3184) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2788) at android.view.View.draw(View.java:11017) at android.view.View.getDisplayList(View.java:10444) at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:2896) at android.view.View.getDisplayList(View.java:10407) at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:2896) at android.view.View.getDisplayList(View.java:10407) at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:2896) at android.view.View.getDisplayList(View.java:10407) at android.view.HardwareRenderer$GlRenderer.draw(HardwareRenderer.java:883) at android.view.ViewRootImpl.draw(ViewRootImpl.java:2089) at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1781) at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2666) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:156) […]

如何模拟Android GC杀死应用程序

我需要在下一种情况下测试应用程序的序列化\反序列化: 应用程序在后台很多时间(空闲模式)并被GC杀死; 应用程序在后台,由于资源(内存\ cp)缺乏而被GC杀死; 在某些设备上,可以通过启动1-2个游戏进行模拟。 但在具有1GB内存的四核设备上,使用4-10个重型游戏非常困难,并且需要花费大量时间。 我尝试实现一些模拟加载资源的演示: 创建位图数组 创建对象数组 推出了很多服务 开展了很多活动 但没有结果,应用程序仍然可以工作(即使在旧设备上),我的演示与OutOfMemoryException崩溃。 如何在演示应用程序中模拟高负载? 谢谢!

如果我们在没有实现其接口的情况下find类调用,则自定义Lint for Java / Android Report

我正在写一个定制的lint探测器,以获得乐趣。 我将关于在Android中创建自定义lint规则的Big Nerd Ranches课程(对于Java应该是相同的) 我可以检测到我想要的事件。 调用类构造函数。 但是由于我们通过抽象语法树遍历的事实,我无法检测到回调的实现。 我不知道如何告诉Java检查文件,只报告它是否找不到事件。 在这种情况下,接口实现。 因为我一次只看到一片叶子。 如何查找两次事件,存储每次发生的位置,然后执行我的逻辑并相应地报告? package com.bignerdranch.linette.detectors; import com.android.annotations.NonNull; import com.android.tools.lint.detector.api.Category; import com.android.tools.lint.detector.api.Context; import com.android.tools.lint.detector.api.Detector; import com.android.tools.lint.detector.api.Implementation; import com.android.tools.lint.detector.api.Issue; import com.android.tools.lint.detector.api.JavaContext; import com.android.tools.lint.detector.api.Location; import com.android.tools.lint.detector.api.Scope; import com.android.tools.lint.detector.api.Severity; import com.android.tools.lint.detector.api.TextFormat; import java.io.File; import java.util.EnumSet; import java.util.List; import lombok.ast.AstVisitor; import lombok.ast.Node; /** * Lint check for the usage of to-do statements […]

Android WebView onPageFinished BUG

在Android OREO中更新API(27)后,此代码不再有效: public void onPageFinished(WebView view, String url) { super.onPageFinished(view, url); view.loadUrl(“javascript:(function() {document.getElementById(\”imPage\”).style.display=’none’;})()”); } 我也尝试过: webView.loadUrl( “javascript:(function() { ” + “document.addEventListener(\”DOMContentLoaded\”, function(event) {” + “document.getElementById(\”imPage\”).style.display=’none’;” + “});” + “})()”); 元素未隐藏和调试返回: I/chromium: [INFO:CONSOLE(1)] “Uncaught TypeError: Cannot read property ‘style’ of null”, source: mywebsite/ (1) 所以我认为javascript是在加载页面之前注入的,这解释了为什么行是1,因为我在加载页面完成后调用了其他代码,但是当页面为白色而未加载时调用此代码。

有没有可靠的方法来处理Android应用程序的Windows集成(NTLM)身份validation?

正如标题所述,我们正在寻找一种方法来访问Windows集成(NTLM)身份validation背后的.NET 3.5 Web服务。 我们整整一周都在搜索互联网和本论坛,我们还没有find解决这个问题的方法。 我们尝试过,DefaultHttpConnections,HttpPost,HttpGet等的不同变体。 但是,我们尝试validation自己,我们遇到这些: SSLHandshakeException 要么 Authentication scheme ntlm not supported Authentication error: Unable to respond to any of these challenges: ntlm=WWW-Authenticate: NTLM, negotiate=WWW-Authenticate: Negotiate IIS身份validation设置如下: 我们尝试访问的页面是默认站点的子文件夹中的.aspx,我们没有优势,也不能将身份validation更改为默认站点。 我知道互联网中有很多其他人也有类似的问题。 此外,我们正在开发的应用程序不应该使用Web视图。 任何有关如何解决这个问题的建设性指示都将受到高度赞赏。 提前致谢。 更新:我们现在已经更改了服务以执行基本和ntlm身份validation。 当我们将下面的代码运行到localhost测试服务器时,我们得到了正确的响应,localhost没有任何types的身份validation机制。 答复如下: 4545 1 但是 ,当我们在经过身份validation的服务器上运行以下代码时,我们会得到此信息 org.xmlpull.v1.XmlPullParserException:expected:START_TAG { http://schemas.xmlsoap.org/soap/envelope/ } Envelope(位置:START_TAG @ 2:44 in java.io.InputStreamReader@4054b398) SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME); […]

访问片段视图时偶尔会出现NPE

输入片段时偶尔会出现NullPointerException 。 它发生在应用程序在后台很长一段时间然后我打开它并滑动到这个片段。 public class SummaryFragment extends Fragment implements FragmentLifecycle { private static final String TAG = “DTAG”; private DateFormat dateFormatName; private Preference prefs; private List monthList; private TextView totalTimeFullTv; private TextView totalTimeNetTv; private TextView averageTimeTv; private TextView overUnderTv; private TextView minTimeTv; private TextView maxTimeTv; private TextView vacationsTv; private TextView sickTv; private TextView headlineTv; private […]

将两个音频流混合到android中的单个音频流中?

我试图混合两个音频流来获得单个输出流是否有可能在Android? 在我的例子中,我有一个来自麦克风的输入流,即我正在使用AudioRecord录制用户语音。 我想将这个录音与一个简短的声音片段混合,然后创建一个新流,它是两个流的混合,然后通过数据报套接字发送。 我已经研究了很多,这就是我所知道的。 首先,SoundPool可以帮助我实现目标,但我认为我不能提供麦克风作为输入源。 目前,我将记录从MIC保存在缓冲区中,然后通过数据报套接字进行流式传输。 我以为我可以将声音片段保存在另一个缓冲区中,然后添加两个缓冲区(我知道这是一个愚蠢的想法,因为我必须管理各种声音属性)。 也可能是我可以将录音从麦克风保存到文件并将声音片段录制到不同的文件并混合它们,但我想我不能这样做,因为我试图通过数据报套接字流式传输录音。 我认为使用Java的声音API可以实现我想要实现的目标。 但Android不支持它。 总而言之,我想要实现的目标是在基于VoIP(SIP)的呼叫中注入声音效果(声音效果就像蟋蟀声音和我的声音一样)。 我希望我对我的问题做了明确的解释。 问题1:我怎样才能做到这一点? 问题2:我可以使用Java的Sound API创建一个JAR文件并在我的项目中使用它吗? (关于这一点,我认为这是不可能的) 以下是我的录音和音频播放的一些代码。 这是我的录音代码: public void run() { // TODO Auto-generated method stub try{ int minbuffer = AudioRecord.getMinBufferSize(sample, config, format); DatagramSocket socket = new DatagramSocket(); Log.d(TAG, “Socket Created”); socket.setBroadcast(true); byte[] ubuff = new byte[minbuffer]; DatagramPacket packet; Log.d(TAG, “Packet Created”); InetAddress dest […]

多个超类和代码重用

这个问题与Android有关,因为我的需求存在于该域中,但问题仍然适用于整个Java; 我将在这里使用一些Android术语,如Activity , FragmentActivity , ListActivity等… 我需要实现一个抽象基类,其中包含必须在整个应用程序中使用的function,更具体地说,每个Activity必须使用此function,但我希望它由基类自动处理。 我的问题是我在应用程序中有许多不同types的活动,如Activity , FragmentActivity和ListActivity ,所有这些Activity都扩展了Activity (当然减去Activity )。 由于基类中的代码对于Activity每个实现都是完全相同的,有没有办法避免代码重复并需要为每种types的Activity创建基类? 我想避免的是: public abstract class BaseActivity extends Activity { public void onCreate(Bundle savedBundle) { // code goes here, will be the exact same for all these base classes } } public abstract class BaseFragmentActivity extends FragmentActivity { public void onCreate(Bundle savedBundle) { […]