标签: android-4.4-kitkat

mylib.so有文本重定位.这会浪费内存并且存在安全风险.请修理

我的Android应用程序(使用本机库)在Android 4.4上打印此警告:

链接器mylib.so具有文本重定位.这会浪费内存并且存在安全风险.请修理.

你知道它是什么以及如何解决它吗?谢谢,

android native android-4.4-kitkat

41
推荐指数
1
解决办法
6万
查看次数

如何使用Android API记录屏幕并截取屏幕截图?

背景

Android在Kitkat和Lollipop上获得了新的API,用于视频捕获屏幕.您可以通过ADB工具或通过代码(从Lollipop开始)来完成.

自新API发布以来,许多应用程序都使用此功能,允许记录屏幕,微软甚至制作了自己的Google-Now-On-tap竞争对手应用程序.

使用ADB,您可以使用:

adb shell screenrecord /sdcard/video.mp4 
Run Code Online (Sandbox Code Playgroud)

您甚至可以在Android Studio内部执行此操作.

问题

我找不到任何有关如何使用API​​的教程或解释,这在代码中是有意义的.

我发现了什么

我找到的唯一的地方是文件(这里,在"屏幕截图和分享"下),告诉我这个:

Android 5.0允许您使用新的android.media.projection API为您的应用添加屏幕捕获和屏幕共享功能.例如,如果要在视频会议应用中启用屏幕共享,此功能很有用.

createVirtualDisplay()方法允许您的应用程序将主屏幕的内容(默认显示)捕获到Surface对象中,然后您的应用可以通过网络发送该对象.API仅允许捕获非安全屏幕内容,而不是系统音频.要开始屏幕捕获,您的应用必须首先通过使用通过该createScreenCaptureIntent()方法获得的Intent启动屏幕捕获对话框来请求用户的许可.

有关如何使用新API的示例,请参阅示例项目中的MediaProjectionDemo类.

事实是,我找不到任何"MediaProjectionDemo"样本.相反,我发现了"屏幕截图"样本,但我不明白它是如何工作的,因为当我运行它时,我所看到的只是一个闪烁的屏幕,我不认为它将视频保存到一份文件.样本看起来非常错.

问题

如何使用新API执行这些操作:

  1. 开始录音,可选择包括音频(麦克风/扬声器/两者).
  2. 停止录音
  3. 截取屏幕截图而不是视频.

另外,我如何自定义它(分辨率,请求的fps,颜色,时间......)?

android screenshot screen-recording android-4.4-kitkat android-5.0-lollipop

40
推荐指数
1
解决办法
4万
查看次数

Android KitKat中的WebView渲染问题

我一直在研究一个具有WebView的应用程序,其中从资产中加载静态页面(也使用JavaScript).此WebView在KitKat中不起作用,它仍然是空白的.我知道渲染引擎(webkit到chrome)的变化发生在kitkat中的WebView中,并尝试了迁移的步骤,这在Android开发者页面中给出.但它没有帮助.

在logcat中,我收到一个从Chromium源抛出的错误.

W/AwContents? nativeOnDraw failed; clearing to background color.

请建议一个解决方法.

android webview chromium android-4.4-kitkat

38
推荐指数
2
解决办法
4万
查看次数

如何使用Android 4.4打印框架打印PDF

如何使用Android 4.4打印框架打印已下载的​​PDF?

我查看了开发人员文档.但没有运气.任何例子都会有所帮助

android android-4.4-kitkat android-print-framework

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

从android执行shell命令

我正在尝试从应用程序模拟器终端执行此命令(您可以在谷歌播放中找到它)在这个应用程序中我写su并按enter,所以写道:

screenrecord --time-limit 10 /sdcard/MyVideo.mp4

然后再次按下enter并使用android kitkat的新功能开始录制屏幕.

所以,我尝试使用以下方法从java执行相同的代码:

Process su = Runtime.getRuntime().exec("su");
Process execute = Runtime.getRuntime().exec("screenrecord --time-limit 10 /sdcard/MyVideo.mp4");
Run Code Online (Sandbox Code Playgroud)

但是不起作用,因为没有创建文件.显然我在安装了android kitkat的root设备上运行.问题出在哪儿?我怎么解决?因为从终端模拟器工作和Java不?

java xml shell android android-4.4-kitkat

38
推荐指数
3
解决办法
10万
查看次数

如何检测Android运行时(Dalvik或ART)?

Google 在Android 4.4中添加了一个新的ART运行时.如何确定ART或Dalvik是否是当前的运行时?

android dalvik android-4.4-kitkat art-runtime

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

MediaPlayer:应该已经设置了字幕控制器:KitKat

我有一个奇怪的问题,我的音频文件有时会播放,有时不播放.问题是当它决定不玩时,DDMS给了我一个:

E/MediaPlayer? Should have subtitle controller already set
Run Code Online (Sandbox Code Playgroud)

因为这是一对一的音乐没有播放,我已经确定这可能是问题......

如果音乐没有播放,我按下音量按钮就会开始播放.如果我等待大约30秒的无人游戏,它会再次开始(不循环).

这里发生了什么?我正在使用KitKat

        player = new MediaPlayer();
        AssetFileDescriptor afd = null;
        try {
            afd = getAssets().openFd("Theme.mp3");
        } catch (IOException e) {
            e.printStackTrace();
        }
        try {
            player.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength()); 
        } catch (IOException e) {
            e.printStackTrace();
        }
        try {
            player.prepare();
        } catch (IOException e) {
            e.printStackTrace();
        }
        player.setLooping(true); //restart playback end reached
        //player.setVolume(1, 1); //Set left and right volumes. Range is from 0.0 to 1.0
        player.start(); //start play back
Run Code Online (Sandbox Code Playgroud)

android android-mediaplayer android-4.4-kitkat

37
推荐指数
1
解决办法
6万
查看次数

为什么FusedLocationApi.getLastLocation为null

我试图通过使用获取位置FusedLocationApi.getLastLocation,我在清单文件中获得了位置权限:

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
Run Code Online (Sandbox Code Playgroud)

但是,null当我从系统请求位置时,我得到了.我只是测试关闭和位置服务,所以它可能与此有关(当然,当我尝试这个时它是开启的).但即使在返回null之后,我也在等待onLocationChanged被调用,而且它从未被调用过.我在这里也看到了类似的问题:FusedLocationApi.getLastLocation总是为null

这是我的代码:

 protected LocationRequest createLocationRequest() {
    LocationRequest mLocationRequest = new LocationRequest();
    mLocationRequest.setInterval(120000);
    mLocationRequest.setFastestInterval(30000);
    mLocationRequest.setPriority(LocationRequest.PRIORITY_BALANCED_POWER_ACCURACY);
    return mLocationRequest;
}

protected GoogleApiClient getLocationApiClient(){
    return new GoogleApiClient.Builder(this)
            .addConnectionCallbacks(this)
            .addOnConnectionFailedListener(this)
            .addApi(LocationServices.API)
            .build();
}

LocationRequest locationRequest = createLocationRequest(); 

@Override
public void onLocationChanged(Location location) {
    App.setLocation(location); // NEVER CALLED
}

@Override
public void onConnected(Bundle bundle) {
    App.setLocation(LocationServices.FusedLocationApi.getLastLocation(locationApiClient)); //RETURNS NULL
    LocationRequest locationRequest = createLocationRequest();
    LocationServices.FusedLocationApi.requestLocationUpdates(locationApiClient, locationRequest, this);
}
Run Code Online (Sandbox Code Playgroud)

onCreate我的应用程序上:

locationApiClient = getLocationApiClient(); …
Run Code Online (Sandbox Code Playgroud)

android android-location android-4.4-kitkat fusedlocationproviderapi android-fusedlocation

36
推荐指数
3
解决办法
5万
查看次数

为什么我们不能使用带有和ActionBar的半透明系统条

在将我的应用程序更新到Kitkat时,我只想使用Translucent属性在KitKat上给它们一个漂亮的外观:

半透明系统条

现在,您可以使用新主题(Theme.Holo.NoActionBar.TranslucentDecor和Theme.Holo.Light.NoActionBar.TranslucentDecor)使系统栏部分半透明.通过启用半透明系统条,您的布局将填充系统条后面的区域,因此您还必须为布局中不应被系统条覆盖的部分启用[fitsSystemWindows] [4].

我唯一担心的是我想使用一个与Google想要相反的ActionBar(两个主题都有NoActionBar:

Theme.Holo.NoActionBar.TranslucentDecor 
Theme.Holo.Light.NoActionBar.TranslucentDecor 
Run Code Online (Sandbox Code Playgroud)

由于我不打算使用一些黑客或技巧来使其工作,我只是想知道是否有一些正确的方法来实现这一点,或者这是否违反谷歌的指导方针.

在此输入图像描述

android android-actionbar android-4.4-kitkat

35
推荐指数
4
解决办法
5万
查看次数

永久隐藏Android状态栏

我正试图在Android 4.4设备上隐藏系统状态栏.这适用于自助服务终端模式,我的应用程序将成为设备上唯一运行的应用程序.目前的目标设备是2013 Nexus 7.

该设备已植根,我已经能够完全删除底部导航栏,其中包含此帖子中的一些信息.

对于顶级状态栏,我尝试过的所有内容都只是暂时隐藏了栏.如果我的用户在屏幕顶部向下移动,状态栏会重新出现.我不想让他们看到时间,进入设置甚至看到通知.

我找到的帖子已经尝试过了:

有什么建议?

理想情况下,我希望能够编辑build.prop来执行此操作,因为我已经在为导航栏执行此操作,并且可以同时执行此操作.我正在尝试不必构建自己的android映像.

更新:

经过一些更多的工作,这似乎在某种程度上取决于android的确切构建,或其运行的设备.

有些设备,例如我一直在使用的Nexus系列,允许用户滑动以重新显示条形图.

但是,我最近在Verizon Eclipse上尝试了这个,并且该栏不再出现,这就是我想要的.

我仍然在寻找一种更好的解决方案来定位所有设备,但它可能会归结为创建我自己的android构建.

android root android-4.4-kitkat

35
推荐指数
4
解决办法
4万
查看次数