标签: android-tv

奇怪的Android RecyclerView(GridLayoutManager)焦点行为

我有一个带有GridLayoutManager的RecyclerView,每行有2列.因为开发适用于Android TV,所以我需要专注于导航.

在此输入图像描述

如果我使用向下键导航到任何可见项目,这没关系.例如,项目1 - >项目3 - >项目5 - >项目7(仅部分可见.).但是当我再次按下键时,焦点将转移到第10项而不是9.

在此输入图像描述

我的网格视图适配器是:

public class GridAdapter extends RecyclerView.Adapter<GridAdapter.ViewHolder> {    
    private ArrayList<String> mDataset;

    public GridAdapter(ArrayList<String> myDataset) {
        mDataset = myDataset;
    }

    @Override
    public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
        View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.grid_item, viewGroup, false);
        ViewHolder vh = new ViewHolder(v);
        return vh;
    }

    @Override
    public void onBindViewHolder(ViewHolder holder, int position) {
        holder.txtTitle.setText(mDataset.get(position));    
    }

    @Override
    public int getItemCount() {
        return mDataset.size();
    }

    public static class ViewHolder extends RecyclerView.ViewHolder {

        public TextView txtTitle;
        public ViewHolder(View v) …
Run Code Online (Sandbox Code Playgroud)

android android-tv recycler-adapter

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

Android TV ADT-1 adb连接端口有变化吗?

嗨,截至昨天,我能够通过WiFi构建并推送apk文件到ADT-1 Android电视设备.然后设备有更新,现在我不再能够连接到设备.我认为允许连接的端口号adb已经改变了......但是到了什么?

是的我确保IP地址有效并使用端口号"4321".Ping设备有效.但它给我的错误:"无法连接到10.0.0.86:4321:4321"

我试图通过以太网和WiFi连接.两者都失败了

debugging android adb android-tv

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

Android电视:获取频道列表

我已经安装了androidtv-sample-inputs,所以我可以伪造一些电视输入并有一些频道,我想获得有关该频道的信息,但是,当我查询获取该信息时,我得到一个空游标.

到目前为止我尝试的是:

TvInputManager tv = (TvInputManager)getApplicationContext().getSystemService(Context.TV_INPUT_SERVICE);

    List<TvInputInfo> list = tv.getTvInputList();

    String[] projection =  {
            TvContract.Channels._ID,
            TvContract.Channels.COLUMN_DISPLAY_NUMBER
    };

    ContentResolver cr = getContentResolver();

    Iterator<TvInputInfo> it = list.iterator();
    while(it.hasNext()) {
        TvInputInfo aux = it.next();
        Uri uri = TvContract.buildChannelsUriForInput(aux.getId());

        Log.d("TAG", uri.toString());
        Log.d("TAG", aux.toString());

        Cursor cur = cr.query(uri, projection, null, null ,null);
        Log.d("TAG", cur.toString());

        if(cur.moveToFirst()) {
            Log.d("TAG", "not empty cursors");
        }

    }
Run Code Online (Sandbox Code Playgroud)

我已经添加了使用许可,我已经检查过电视输入没有传递.

<uses-permission android:name="com.android.providers.tv.permission.READ_EPG_DATA" />
<uses-permission android:name="com.android.providers.tv.permission.WRITE_EPG_DATA" />
<uses-permission android:name="com.android.providers.tv.permission.ACCESS_ALL_EPG_DATA"/>
Run Code Online (Sandbox Code Playgroud)

android android-tv

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

删除SearchOrbView Android TV

如何删除Android TV的BrowseFragment中的searchOrbView?

我看到了一种设置颜色的方法(setSearchAffordanceColors),但无法实际删除SearchOrbView

由于TitleView是BrowseFragment的私有成员(而TitleView是获取SearchOrbView的方式),我认为无法实际删除SearchOrbView

android android-tv leanback

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

UnsatisfiedLinkError:dalvik.system.PathClassLoader

我正在为AndroidTV制作申请并收到错误

java.lang.UnsatisfiedLinkError:
 dalvik.system.PathClassLoader[DexPathList[[zip file
 "/data/app/mytv.mytv-2/base.apk"
Run Code Online (Sandbox Code Playgroud)

在Android 6.0.1的NexusPlayer上.好奇它适用于Android 5.1.1的智能电视.

整个文本错误是:

java.lang.UnsatisfiedLinkError:
 dalvik.system.PathClassLoader[DexPathList[[zip file
 "/data/app/mytv.mytv-2/base.apk"],nativeLibraryDirectories=[/data/app/mytv.mytv-2/lib/x86, /data/app/mytv.mytv-2/base.apk!/lib/x86, /vendor/lib, /system/lib]]]
 couldn't find "libnmpsdk.so"
Run Code Online (Sandbox Code Playgroud)

如果有帮助.

(jniLabs很好用2个文件夹armeabi和armeabi-v7a,每个文件夹都有libnmpsdk.so)

日志显示的错误行包含以下部分代码:

static {
    System.loadLibrary("nmpsdk");
}
Run Code Online (Sandbox Code Playgroud)

如果有人遇到过这个问题,请告诉我,我还没有找到解决问题的方法.

提前致谢.

android android-tv nexus-player

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

Android:OnClickListener在初始加载时没有响应?

我面临一个奇怪的问题,我不确定是什么导致了它.基本上,我正在使用ErrorFragment类来显示错误,简单吧?

问题与使用按钮单击侦听器设置有关setButtonClickListener.当MainFragment最初被加载,按钮不能在我的Android电视遥控器注册任何点击.

但是,如果我MainFragment使用遥控器上的后退按钮重新加载,则按钮会记录点击次数.

谁能给我一些关于为什么会发生这种情况的见解?

谢谢!

MainActivity.java:

public class MainActivity extends Activity
{
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
}
Run Code Online (Sandbox Code Playgroud)

activity_main.xml中:

<fragment
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/main_browse_fragment"
    android:name="com.ui.MainFragment"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.ui.MainActivity"
    tools:deviceIds="tv"
    tools:ignore="MergeRootFrame" />
Run Code Online (Sandbox Code Playgroud)

MainFragment.java:

public class MainFragment extends DetailsFragment
{
    @Override
    public void onActivityCreated(Bundle savedInstanceState)
    {
        super.onActivityCreated(savedInstanceState);

        setupUIElements();

        if (isConnectingToInternet() == true)
        {
            prepareBackgroundManager();
            loadRows();
            setupEventListeners();
        }
        else
        {
            InternetConnectivityFragment internetError = new InternetConnectivityFragment();

            getFragmentManager().beginTransaction().add(R.id.main_browse_fragment, internetError).commit();
        }
    }

    public class GetInternetStatus extends …
Run Code Online (Sandbox Code Playgroud)

java android android-fragments android-tv

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

Android TV:RowsFragment项目在少数情况下点击不起作用

我正在研究一个Android TV应用程序,我面临一个与项目点击监听器相关的奇怪问题:一切正常,但有时点击不会传播,很可能没有设置监听器.

我有子类RowsFragment,我用6个元素的行显示我的图像:这意味着网格的每一行实际上都是适配器中的一行,即使视觉上照片的月份相同.请查看图片以便更好地理解.

在此输入图像描述

现在的问题是:当我启动应用程序并向下滚动时,上面图像中看不到的第一行(所以第四行,因为这里有3行被渲染),没有得到我的"点击",没有任何反应.对于第5行,第6行......也可能是这样但是然后(我没有识别出模式)行再次开始可点击(即第8,第9,......)前3行也总是可点击的.

如果我再次向上滚动并且那些不可点击的行再次出现在屏幕上,现在它们是可点击的.

onCreate片段中,我调用:
setOnItemViewClickedListener(new ItemViewClickedListener());
并且根据文档,这应该覆盖单项视图设置的侦听器.它还建议设置一个监听器,而不是两个:实际上我只是为片段设置了一个监听器.

Presenter单行项的类中,我尝试onCreateViewHolder在视图中添加一个单击侦听器,并且我发现问题发生时,将调用此侦听器.

因此,在某些情况下,整个片段侦听器似乎不会覆盖视图侦听器,或者根本不设置它.

这个问题让我担心的是,当我设置断点并停止滚动动画时,我无法在调试模式下重现它.

我正在使用最新的Leanback版本:

compile 'com.android.support:leanback-v17:25.3.1'
Run Code Online (Sandbox Code Playgroud)

这个问题在Nvidia Shield TV(Android 7.0)上是可重现的,在其他设备上并不确定.

更新:有趣的是,当一个项目在一行中无法点击时,我希望同一行中的所有项目都不可点击.相反,事实并非如此,有些是可点击的,有些则不是.

更新2:似乎ListRowPresenterItemBridgeAdapter方法onBind,在某些情况下,发现getOnItemViewClickedListener返回null,因此没有设置项目单击侦听器.这很奇怪,因为监听器是为主RowsFragment类设置的,它适用于大多数项目,也适用于那些不起作用的项目.

作为一种解决方法,我找到了这个解决方案:子类化ListRowPresenter并设置一个虚拟点击监听器.

private class GroupedListRowPresenter extends ListRowPresenter {
    GroupedListRowPresenter(int focusZoomFactor) {
        super(focusZoomFactor);
    }

    @Override
    protected void onBindRowViewHolder(RowPresenter.ViewHolder holder, Object item) {
        super.onBindRowViewHolder(holder, item);

        holder.setOnItemViewClickedListener(new BaseOnItemViewClickedListener() {
            @Override
            public void onItemClicked(Presenter.ViewHolder itemViewHolder, Object item, RowPresenter.ViewHolder
                    rowViewHolder, Object row) {
                Timber.d("item click …
Run Code Online (Sandbox Code Playgroud)

android android-support-library android-tv leanback

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

在Android TV上启用后台播放

当用户决定在电影期间按"主页"时,我想在后台继续播放.

我按照指南在这里: https://developer.android.com/training/tv/playback/options.html

并编写以下代码(WHICH WORKS):

@Override
public void onPause() {
    super.onPause();
    if (mVideoView.isPlaying())
    {
        // Argument equals true to notify the system that the activity
        // wishes to be visible behind other translucent activities
        if (! requestVisibleBehind(true)) {
            // App-specific method to stop playback and release resources
            // because call to requestVisibleBehind(true) failed
            stopPlayback();
        }
    } else {
        // Argument equals false because the activity is not playing
        requestVisibleBehind(false);
    }
}

@Override
public void onVisibleBehindCanceled() {
  // App-specific method to …
Run Code Online (Sandbox Code Playgroud)

android android-tv

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

什么是android.media.tv的依赖项

我尝试将Android TV应用程序移动到Android工作室.当我尝试编译它时,我有一些导入错误.我找不到可以添加到build.gradle的依赖项来修复这些问题.进口清单是:

import android.media.tv.TvContentRatingSystemInfo;
import android.media.tv.TvContract.WatchedPrograms;
import com.android.tv.tuner.data.nano.Track.AtscCaptionTrack;
import com.android.tv.tuner.data.nano.Track.AtscAudioTrack;
import com.android.tv.tuner.data.nano.Channel;
Run Code Online (Sandbox Code Playgroud)

build.gradle是:

apply plugin: 'com.android.application'

android {
 compileSdkVersion 26
 buildToolsVersion "26.0.1"

 defaultConfig {
     applicationId "com.android.tv"
     minSdkVersion 23
     targetSdkVersion 23
     versionCode 1
     versionName "1.0"

     ndk {
         moduleName "libtunertvinput_jni"
     }
 }
 sourceSets {
     main {
         res.srcDirs = ['src/main/res', 'src/main/usbtuner-res']
         jni.srcDirs = []
     }
 }
 buildTypes {
     release {
         minifyEnabled false
         proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
     }
     debug {
         minifyEnabled false
         proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
     }
 }
}

dependencies {
 compile fileTree(dir: 'libs', include: ['*.jar']) …
Run Code Online (Sandbox Code Playgroud)

java android gradle android-tv

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

Play 商店:如何在更新应用程序后重新启动 Android TV 审核

我在 Play 商店中发布了 Android TV 应用程序。我通过访问选择了 Android TV Setup > Advanced Settings > Release Types。后来由于正当理由被拒绝,我收到了一封电子邮件。

\n

现在,我修复了问题并发布了新版本。

\n

我预计高级设置中 Android TV 部分的Rejected状态会更改为。In Review

\n

但是,可悲的是,它只是表明了Update rejected。目前尚不清楚这是否意味着新的更新被拒绝。我没有收到任何电子邮件。即使“政策”部分中的错误消息仅显示最后一次拒绝的详细信息,日期也反映了第一次拒绝的情况。

\n

现在,我认为,发布更新后甚至没有启动审核。我如何发起审核?我试过opt-out \xe2\x87\xa8 save \xe2\x87\xa8 opt-in。即使如此,它也不会进入in review状态。

\n

任何帮助表示赞赏...

\n

\n

\n

\n
\n

请注意,该应用程序的新版本已被批准为常规应用程序。拒绝仅在Android TV.

\n

\n

android-tv google-play-console

7
推荐指数
0
解决办法
860
查看次数