小编Dan*_*lB6的帖子

stopPlayback()之后的Android VideoView清除显示

我正在使用VideoView组件播放视频.手动调用stopPlayback()后,我似乎无法清除VideoView显示.我想重置VideoView,以便可以看到原始背景.

  1. 在VideoView组件中播放视频.
  2. 选择要播放的新视频.
  3. VideoView卡在第一个视频的最后一帧,直到下一个视频开始.如果下一个视频出现错误,则第一个视频中的静态图像仍然卡在那里.
  4. 如果我让视频播放到完成状态,则清除显示.

我正在使用的代码:

private VideoView videoViewer = null;

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
...
  if (videoViewer != null) {
    videoViewer.setOnPreparedListener(new OnPreparedListener());
  }
...
}

public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
  if (videoViewer != null) {
    videoViewer.stopPlayback();
    videoViewer.setVideoURI(Uri.parse("http://my_vido_url/playlist.m3u8"));
  }
}

private class OnPreparedListener implements MediaPlayer.OnPreparedListener {
  @Override
  public void onPrepared(MediaPlayer mp) {
    videoViewer.start();
  }
}
Run Code Online (Sandbox Code Playgroud)

请注意,基于VideoView.java源,stopPlayback()在底层MediaPlayer上执行以下操作:

public void stopPlayback() {
  if (mMediaPlayer != null) {
    mMediaPlayer.stop();
    mMediaPlayer.release();
    mMediaPlayer = …
Run Code Online (Sandbox Code Playgroud)

android android-widget

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

Android PreferenceScreen - 我可以在不保存SharedPreferences首选项的情况下使用它吗?

我正在尝试使用Android PreferenceScreen作为布局我的用户设置的便捷方式,但我不想将首选项保存到设备共享首选项.这是可能的,还是我应该使用不同的机制,如ListView

使用该PreferenceScreen类型似乎非常方便,因为我需要不同的小部件(即开关,编辑文本).但我已经遇到了持久性问题,即.我输入的任何东西都会在我不想要它的时候持续存在.

settings.xml中:

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <Preference
        android:key="settings_type"
        android:title="@string/label_type" />

    <EditTextPreference
        android:key="settings_edit_name"
        android:title="@string/label_name"
        android:dialogTitle="Enter a name"
        android:singleLine="true" />

    <SwitchPreference
        android:key="settings_edit_state"
        android:title="@string/label_state"
        android:summary="Enable or disable the state" />

</PreferenceScreen>
Run Code Online (Sandbox Code Playgroud)

android android-widget android-layout

14
推荐指数
3
解决办法
4745
查看次数

FFmpeg:av_interleaved_write_frame未检测到TLS输出失败

我如何可以检测从失败av_interleaved_write_frame/ av_write_frame时的输出使用TLS和连接失败?目标变为不可用后,这两个函数将继续返回0.当不使用TLS时,函数立即检测到故障并返回-ve返回码.

TLS输出:

av_interleaved_write_frame st.tb=90000, result=0
Run Code Online (Sandbox Code Playgroud)

非TLS输出:

av_interleaved_write_frame failed result=-32 - Broken pipe
Run Code Online (Sandbox Code Playgroud)

也可以使用命令行工具演示此行为.

普通连接的预期结果 - 连接失败终止程序:

$ ffmpeg -rtsp_transport tcp -i rtsp://<rtsp_source>:554... -vcodec copy -an -f rtsp "rtsp://<rtsp_dest>:1935..."
ffmpeg version N-68044-g9f9440b Copyright (c) 2000-2014 the FFmpeg developers
  built on Nov 27 2014 03:13:44 with gcc 4.9.2 (GCC)
  configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libfreetype --enable-libgme --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinger --enable-libsoxr --enable-libspeex --enable-libtheora …
Run Code Online (Sandbox Code Playgroud)

ffmpeg libavcodec libavformat

9
推荐指数
0
解决办法
725
查看次数

针对JDK8构建时,Java应用程序CPU /负载要高得多

我在Windows中的Eclipse Luna中开发了一个Java应用程序,它在Amazon EC2(c3.large,Amazon Linux)中运行.此应用程序处理以非常一致的传入速率工作.当我针对JDK 8u31构建应用程序时,EC2 CPU负载远高于针对JDK 7u75构建的相同应用程序.

该应用程序最初使用EC2上的默认JRE运行,我添加了OpenJDK 1.8.0.31以利用Java 8 Process waitFor(长超时,TimeUnit单元).此应用程序的主要工作涉及使用Runtime.exec调用应用程序.

$ sudo alternatives --config java

There are 2 programs which provide 'java'.

  Selection    Command
-----------------------------------------------
*  1           /usr/lib/jvm/jre-1.7.0-openjdk.x86_64/bin/java
 + 2           /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.31-2.b13.5.amzn1.x86_64/jre/bin/java
Run Code Online (Sandbox Code Playgroud)

应用程序针对1.7构建时的示例负载平均值:

top - 00:20:28 up 4 days, 10:41,  4 users,  load average: 0.37, 0.26, 0.52
Run Code Online (Sandbox Code Playgroud)

应用程序构建为1.8时的平均负载示例:

top - 23:45:52 up 4 days, 10:06,  4 users,  load average: 2.28, 2.60, 2.01
Run Code Online (Sandbox Code Playgroud)

看起来它可能与Open JDK 1.8.0.31有关,但我不知道如何调试它.没有代码更改,我只是在Eclipse Luna中更改合规性级别并在1.7和1.8之间构建.知道为什么负载会如此不同?

更新:

当我在EC2上使用Oracle JDK时,我看到类似的高CPU负载.

$ sudo alternatives --config java

There are 3 programs which …
Run Code Online (Sandbox Code Playgroud)

java eclipse amazon-ec2 java-8

8
推荐指数
1
解决办法
1169
查看次数