小编Aus*_*ney的帖子

使用FFMpeg为Android解码视频

我尝试使用互联网上提供的示例示例中的FFMpeg库解码视频,我用新版本的ffmpeg搞清楚,这是我从我的类文件中调用的代码,

   private static native int decodeVideo(String filename);
   decodeVideo(getString(R.string._sdcard_abc_3gp));
Run Code Online (Sandbox Code Playgroud)

现在位于JNI目录的.c文件中,我写了这段代码,

 jint Java_ru_dzakhov_ffmpeg_test_MainActivity_decodeVideo(JNIEnv* env, jobject
javaThis,jstring filename) {   
  AVFormatContext *pFormatCtx;
  int             i, videoStream;
  AVCodecContext  *pCodecCtx;
  AVCodec         *pCodec;
  AVFrame         *pFrame;
  AVFrame         *pFrameRGB;
  AVPacket        packet;
  int             frameFinished;
  int             numBytes;
  uint8_t         *buffer;

  // Register all formats and codecs
  av_register_all();

  // Open video file

      const jbyte *str;
      str = (*env)->GetStringUTFChars(env, filename, NULL);

      if(av_open_input_file(&pFormatCtx, str, NULL, 0, NULL)!=0)
      {
          LOGI("Can't open file '%s'\n", str);
          return 1;
      }
      else
      {
          LOGI("File is opened\n");
          LOGI("File '%s', Codec %s",pFormatCtx->filename,pFormatCtx->iformat->name);
      } …
Run Code Online (Sandbox Code Playgroud)

video android ffmpeg decode android-ndk

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

指示Android Gradle脚本删除未对齐的apks并清除工件文件

几天前我开始使用Gradle构建系统并让脚本按照我的意愿工作,这里是:

buildscript {
    repositories {
        mavenCentral()
    }
}

dependencies {
    classpath 'com.android.tools.build:gradle:0.6.+'
}

apply plugin: 'com.android.application'

android {
    compileSdkVersion 17
    buildToolsVersion '18.0.1'


    productFlavors {
        flavor1 {
            packageName "flavor1"
        }
        flavor2 {
            packageName "flavor2"
        }
        flavor3 {
            packageName "flavor3"
        }
    }

    sourceSets {
        main {
            manifest.srcFile 'AndroidManifest.xml'
            java.srcDirs = ['src']
            resources.srcDirs = ['src']
            renderscript.srcDirs = ['src']
            res.srcDirs = ['res']
            assets.srcDirs = ['assets']
        }

        signingConfigs {
            release {
                storeFile file("test.keystore")
                storePassword "*****"
                keyAlias "****"
                keyPassword "*****"
            }
        }
        buildTypes {
            release { …
Run Code Online (Sandbox Code Playgroud)

android build gradle

15
推荐指数
2
解决办法
5391
查看次数

Android上的Dagger 2,错过了错误消息

我在我的Android项目中使用Dagger 2,但我在调试时遇到问题.我知道编译失败是因为我的匕首2设置中的错误(以前有过)但是几乎不可能跟踪它,因为我没有得到正确的错误消息告诉我问题出在哪里.我得到的只是显示注释处理失败的消息.沿着:

Error:Execution failed for task ':app:compileDebugJavaWithJavac'.
> Compilation failed; see the compiler error output for details.
Error:(14, 28) error: cannot find symbol class BR
Error:(17, 40) error: package com.some.package.databinding does not exist
Error:(17, 51) error: cannot find symbol class DaggerSomeComponent
...
Run Code Online (Sandbox Code Playgroud)

也许它与某些事实有关,我也在使用数据绑定!?

我正在使用Dagger 2.5,Gradle插件2.1.2和android-apt 1.8.

谢谢你的帮助!

android annotation-processing dagger-2 android-databinding kapt

12
推荐指数
1
解决办法
2169
查看次数

为什么没有调用AccountAuthenticator#getAuthToken()?

我通过扩展AbstractAccountAuthenticator和实现addAccount()和创建了自己的Android帐户身份验证器getAuthToken().其中的一些方法被称为AccountManager,但其他方法则没有.

这非常有效:

AccountManager#addAccount()

AccountManager accountManager = AccountManager.get(activity);
accountManager.addAccount(MyAccountAuthenticator.ACCOUNT_TYPE,
    MyAccountAuthenticator.AUTHTOKEN_TYPE_FULL_ACCESS, null, null,
    activity, callback, null);
Run Code Online (Sandbox Code Playgroud)

当我打电话给AccountManager#getAuthToken()我时,问题就出现了Activity.AccountManager不会调用getAuthToken()我在我的定义中的方法AccountAuthenticator.它调用一些其他默认方法,只检查authToken启动之前是否存在AuthenticatorActivity.

这不起作用.它不会调用我的getAuthToken()方法:

AccountManager#getAuthToken()

AccountManager accountManager = AccountManager.get(activity);
accountManager.getAuthToken(
        mAccount, MyAccountAuthenticator.AUTHTOKEN_TYPE_FULL_ACCESS, null,
        activity, callback, handler);
Run Code Online (Sandbox Code Playgroud)

AuthenticatorService

我创建了我的服务并定义了onBind().addAccount()不应该工作.

public IBinder onBind(Intent intent) {
    return intent.getAction().equals(ACTION_AUTHENTICATOR_INTENT) ? new MyAccountAuthenticator(this).getIBinder() : null;
}
Run Code Online (Sandbox Code Playgroud)

编辑:addAccountExplicitlyMyAuthenticatorActivity应用程序获取用户的身份验证令牌后调用.

课堂上的片段MyAuthenticatorActivity extends AccountAuthenticatorActivity: …

java android accountmanager

11
推荐指数
1
解决办法
4924
查看次数

用RxJava替换EventBus - N个用户总是在听

我正在用Android应用程序替换EventBus模式RxJava.我有事件提醒任何感兴趣的各方我的缓存单例中的数据更新.每次调用Web服务时,都会更新数据,并通过发布的事件通知订阅者.

我在RxJava中有一些接近这个设置的东西AsyncSubject.观察者从主题中获得单个事件,但随后他们获得了一个onComplete事件并取消订阅.这首先加载UI,但是当需要刷新数据时,不会通知订阅者.我怎么告诉那些Subscribers人继续听取更多的onNext事件Subject呢?

我需要一个Subject会报告最新项目的.PublishSubject只在订阅后发出项目,因此它不能满足我的需求.我的订阅者在不同的时间(可能在第一个数据事件之后)开始观察,因此我需要主题发出最后观察的项目,然后保持流为后续项目打开.似乎AsyncSubject和PublishSubject的组合就是我所需要的.有没有办法用内置类来实现这一点,还是我需要创建自己的主题?

WebServiceObservable OR CacheObservable
                  ^
                  |
             AsyncSubject
                  ^
                  |
                /   \
              /       \
            /           \
      UiObserver1   UiObserver2
Run Code Online (Sandbox Code Playgroud)

android rx-java

11
推荐指数
2
解决办法
5438
查看次数

如何在TextView中获取椭圆化文本

如何将Android截断的文本转换为省略号?

我有一个textview:

<TextView
    android:layout_width="120dp"
    android:layout_height="wrap_content"
    android:ellipsize="end"
    android:singleLine="true"
    android:text="Um longo texto aqui de exemplo" />
Run Code Online (Sandbox Code Playgroud)

在设备上,此TextView显示如下:

"Um longo texto a..."

我如何获得其余文本?

我正在寻找像getRestOfTruncate()"qui de exemplo"这样的东西.

java android truncate textview

9
推荐指数
1
解决办法
4862
查看次数

UiAutomator getLastTraversedText()

我试图使用Android UiAutomator测试Android Webview.据我了解文档,滚动WebvView会生成UI遍历事件,这些事件应该是可读的getUiDevice().getLastTraversedText().

但是,当我使用getUiDevice().pressDPadDown()滚动浏览Web视图时,getUiDevice().getLastTraversedText()保持返回null.

我错过了什么?

如果有人接到这个电话,我会非常感谢一个简短的代码示例.

android ui-automation android-webview android-uiautomator

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

OkHttp拦截器使用OkHttpClient而没有依赖循环

我正在使用Retrofit和Dagger 2.我已经实现了一个OkHttp Interceptor来添加oauth令牌.如果没有oauth令牌或时间戳无效,我会在执行实际请求之前请求新的(通过Retrofit服务).

这会创建一个依赖循环,其中Retrofit服务需要,InterceptorInterceptor也需要Retrofit服务(用于检索oauth令牌).

示例Interceptor(为了简化它总是通过请求令牌restService#refreshAccessToken):

@Override
public Response intercept(Chain chain) throws IOException {
    Request originalRequest = chain.request();
    Request.Builder requestBuilder = originalRequest.newBuilder();

    String authHeader = "Bearer " + restService.refreshAccessToken();
    requestBuilder.addHeader("Authorization", authHeader);
    return chain.proceed(requestBuilder.build());
}
Run Code Online (Sandbox Code Playgroud)

android dependency-injection retrofit okhttp dagger-2

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

AppCompat Action Bar库未显示添加的片段

编辑:如果我延伸FragmentActivity而不是ActionBarActivity我的布局再次显示(ActionBar当然没有).

设备ActionBar上的工作原理4.x,但在我的2.3设备上,我得到的是它下面ActionBar空白屏幕.在Fragment似乎没有被获取添加到Activity.

的themes.xml

<style name="AppTheme" parent="AppBaseTheme">
    <item name="actionBarStyle">@style/Widget.ActionBar</item>
</style>
Run Code Online (Sandbox Code Playgroud)

主题-v11.xml

<style name="AppTheme" parent="AppBaseTheme">
    <item name="android:actionBarStyle">@style/Widget.ActionBar</item>
</style>
Run Code Online (Sandbox Code Playgroud)

styles.xml

<style name="Widget.ActionBar" parent="@style/Widget.AppCompat.ActionBar">
    <item name="android:background">@color/actionbar_background</item>
    <item name="background">@color/actionbar_background</item>
</style>
Run Code Online (Sandbox Code Playgroud)

活动 onCreate()

FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
myFragment = new WallFragment();
fragmentTransaction.add(android.R.id.content, 
    myFragment, myFragment.FRAGMENT_TAG);
fragmentTransaction.commit();
Run Code Online (Sandbox Code Playgroud)

我正在使用Gradle将AppCompat ActionBar库包含在我的应用程序中.

compile 'com.android.support:appcompat-v7:18.0.+'
Run Code Online (Sandbox Code Playgroud)

android android-fragments fragmenttransaction android-actionbar-compat

7
推荐指数
1
解决办法
3602
查看次数

DBFlow选择列表中的COLUMN?

我正在尝试在列表中查询具有主键的所有模型的数据库.这是我的查询(idsList是一个包含整数的ArrayList):

new Select().from(PostModel.class)
    .where(Condition.column(PostModel$Table.ID).in(0, idsList))
    .async().queryList(listener);
Run Code Online (Sandbox Code Playgroud)

但Android Studio突出了其中的条件

"Cannot resolve method 'where(com.raizlabs.android.dbflow.sql.builder.Condition.In)"
Run Code Online (Sandbox Code Playgroud)

那么条件.在不被视为条件?如何在ArrayList中使用primaryKey查询所有模型?

我正在使用DBFlow 2.0.我也可以使用常规SQL查询字符串作为替代,但我不熟悉SQL,所以如果你可以为我的问题提供SQL查询字符串,那将是一种可能的解决方法.

sql database android dbflow

7
推荐指数
2
解决办法
4804
查看次数