当前位置: 首页>>代码示例>>Java>>正文


Java TvContract.buildChannelUri方法代码示例

本文整理汇总了Java中android.media.tv.TvContract.buildChannelUri方法的典型用法代码示例。如果您正苦于以下问题:Java TvContract.buildChannelUri方法的具体用法?Java TvContract.buildChannelUri怎么用?Java TvContract.buildChannelUri使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在android.media.tv.TvContract的用法示例。


在下文中一共展示了TvContract.buildChannelUri方法的10个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: testChannelsProgramSync

import android.media.tv.TvContract; //导入方法依赖的package包/类
@Test
public void testChannelsProgramSync() {
    // Tests that programs and channels were correctly obtained from the EpgSyncJobService
    Uri channelUri =  TvContract.buildChannelUri(mChannelMap.keyAt(0));
    Channel firstChannel = mChannelList.get(0);
    assertEquals("Test Channel", firstChannel.getDisplayName());
    assertNotNull(firstChannel.getInternalProviderData());
    assertTrue(firstChannel.getInternalProviderData().isRepeatable());

    mProgramList = mSampleJobService.getProgramsForChannel(channelUri, firstChannel, mStartMs,
            mEndMs);
    assertEquals(1, mProgramList.size());

    channelUri =  TvContract.buildChannelUri(mChannelMap.keyAt(1));
    Channel secondChannel = mChannelList.get(1);
    assertEquals("XML Test Channel", secondChannel.getDisplayName());
    assertNotNull(secondChannel.getInternalProviderData());
    assertTrue(secondChannel.getInternalProviderData().isRepeatable());

    mProgramList = mSampleJobService.getProgramsForChannel(channelUri, secondChannel, mStartMs,
            mEndMs);
    assertEquals(5, mProgramList.size());
}
 
开发者ID:googlesamples,项目名称:androidtv-sample-inputs,代码行数:24,代码来源:EpgSyncJobServiceTest.java

示例2: onPerformSync

import android.media.tv.TvContract; //导入方法依赖的package包/类
/**
 * Called periodically by the system in every {@code FULL_SYNC_FREQUENCY_SEC}.
 */
@Override
public void onPerformSync(Account account, Bundle extras, String authority,
        ContentProviderClient provider, SyncResult syncResult) {
    Log.d(TAG, "onPerformSync(" + account + ", " + authority + ", " + extras + ")");
    String inputId = extras.getString(SyncAdapter.BUNDLE_KEY_INPUT_ID);
    if (inputId == null) {
        return;
    }
    XmlTvParser.TvListing listings = RichFeedUtil.getRichTvListings(mContext);
    LongSparseArray<XmlTvParser.XmlTvChannel> channelMap = TvContractUtils.buildChannelMap(
            mContext.getContentResolver(), inputId, listings.channels);
    boolean currentProgramOnly = extras.getBoolean(
            SyncAdapter.BUNDLE_KEY_CURRENT_PROGRAM_ONLY, false);
    long startMs = System.currentTimeMillis();
    long endMs = startMs + FULL_SYNC_WINDOW_SEC * 1000;
    if (currentProgramOnly) {
        // This is requested from the setup activity, in this case, users don't need to wait for
        // the full sync. Sync the current programs first and do the full sync later in the
        // background.
        endMs = startMs + SHORT_SYNC_WINDOW_SEC * 1000;
    }
    for (int i = 0; i < channelMap.size(); ++i) {
        Uri channelUri = TvContract.buildChannelUri(channelMap.keyAt(i));
        List<Program> programs = getPrograms(channelUri, channelMap.valueAt(i),
                listings.programs, startMs, endMs);
        updatePrograms(channelUri, programs);
    }
}
 
开发者ID:nejtv,项目名称:androidtv-sample,代码行数:32,代码来源:SyncAdapter.java

示例3: getUri

import android.media.tv.TvContract; //导入方法依赖的package包/类
public Uri getUri() {
    if (isPassthrough()) {
        return TvContract.buildChannelUriForPassthroughInput(mInputId);
    } else {
        return TvContract.buildChannelUri(mId);
    }
}
 
开发者ID:trevd,项目名称:android_packages_apps_tv,代码行数:8,代码来源:Channel.java

示例4: getInputIdForChannel

import android.media.tv.TvContract; //导入方法依赖的package包/类
@WorkerThread
public static String getInputIdForChannel(Context context, long channelId) {
    if (channelId == Channel.INVALID_ID) {
        return null;
    }
    Uri channelUri = TvContract.buildChannelUri(channelId);
    String[] projection = {TvContract.Channels.COLUMN_INPUT_ID};
    try (Cursor cursor = context.getContentResolver()
            .query(channelUri, projection, null, null, null)) {
        if (cursor != null && cursor.moveToNext()) {
            return Utils.intern(cursor.getString(0));
        }
    }
    return null;
}
 
开发者ID:trevd,项目名称:android_packages_apps_tv,代码行数:16,代码来源:Utils.java

示例5: getCurrentChannelUri

import android.media.tv.TvContract; //导入方法依赖的package包/类
/**
 * Returns the current channel's URI
 */
public Uri getCurrentChannelUri() {
    if (mCurrentChannel == null) {
        return null;
    }
    if (mCurrentChannel.isPassthrough()) {
        return TvContract.buildChannelUriForPassthroughInput(mCurrentChannel.getInputId());
    } else {
        return TvContract.buildChannelUri(mCurrentChannel.getId());
    }
}
 
开发者ID:trevd,项目名称:android_packages_apps_tv,代码行数:14,代码来源:ChannelTuner.java

示例6: setUp

import android.media.tv.TvContract; //导入方法依赖的package包/类
@Before
public void setUp() throws Exception {
    super.setUp();
    injectInstrumentation(InstrumentationRegistry.getInstrumentation());
    getActivity();
    // Delete all channels
    getActivity().getContentResolver().delete(TvContract.buildChannelsUriForInput(
            TestTvInputService.INPUT_ID), null, null);

    mSampleJobService = new TestJobService();
    mSampleJobService.mContext = getActivity();
    mChannelList = mSampleJobService.getChannels();
    TvContractUtils.updateChannels(getActivity(), TestTvInputService.INPUT_ID, mChannelList);
    mChannelMap = TvContractUtils.buildChannelMap(getActivity().getContentResolver(),
            TestTvInputService.INPUT_ID);
    assertNotNull(mChannelMap);
    assertEquals(2, mChannelMap.size());

    // Round start time to the current hour
    mStartMs = System.currentTimeMillis() - System.currentTimeMillis() % (1000 * 60 * 60);
    mEndMs = mStartMs + 1000 * 60 * 60 * 24 * 7 * 2; // Two week long sync period
    assertTrue(mStartMs < mEndMs);

    Uri channelUri =  TvContract.buildChannelUri(mChannelMap.keyAt(0));
    Channel firstChannel = mChannelList.get(0);
    assertEquals("Test Channel", firstChannel.getDisplayName());
    assertNotNull(firstChannel.getInternalProviderData());
    assertTrue(firstChannel.getInternalProviderData().isRepeatable());

    mProgramList = mSampleJobService.getProgramsForChannel(channelUri, firstChannel, mStartMs,
            mEndMs);
}
 
开发者ID:googlesamples,项目名称:androidtv-sample-inputs,代码行数:33,代码来源:EpgSyncJobServiceTest.java

示例7: testEpgSyncTask_GetPrograms

import android.media.tv.TvContract; //导入方法依赖的package包/类
@Test
public void testEpgSyncTask_GetPrograms() {
    // For repeating channels, test that the program list will continually repeat for the
    // desired length of time
    Uri channelUri = TvContract.buildChannelUri(mChannelMap.keyAt(0));
    Channel firstChannel = mChannelList.get(0);
    TestJobService.TestEpgSyncTask epgSyncTask = mSampleJobService.getDefaultEpgSyncTask();
    mProgramList = mSampleJobService.getProgramsForChannel(channelUri, firstChannel, mStartMs,
            mEndMs);
    List<Program> continuousProgramsList = epgSyncTask.getPrograms(
            firstChannel, mProgramList, mStartMs, mEndMs);
    // There are 336 hours in a two week period, and each program is 15m long
    assertEquals(336 * 60 / 15, continuousProgramsList.size());
}
 
开发者ID:googlesamples,项目名称:androidtv-sample-inputs,代码行数:15,代码来源:EpgSyncJobServiceTest.java

示例8: doInBackground

import android.media.tv.TvContract; //导入方法依赖的package包/类
@Override
protected Void doInBackground(Void... voids) {
    if (isCancelled()) {
        return null;
    }

    PersistableBundle extras = params.getExtras();
    String inputId = extras.getString(SyncJobService.BUNDLE_KEY_INPUT_ID);
    if (inputId == null) {
        return null;
    }
    XmlTvParser.TvListing listings = RichFeedUtil.getRichTvListings(mContext);
    LongSparseArray<XmlTvParser.XmlTvChannel> channelMap = TvContractUtils.buildChannelMap(
            mContext.getContentResolver(), inputId, listings.channels);
    if (channelMap == null) {
        return null;
    }
    boolean currentProgramOnly = extras.getBoolean(
            SyncJobService.BUNDLE_KEY_CURRENT_PROGRAM_ONLY, false);
    long startMs = System.currentTimeMillis();
    long endMs = startMs + FULL_SYNC_WINDOW_SEC * 1000;
    if (currentProgramOnly) {
        // This is requested from the setup activity, in this case, users don't need to wait
        // for the full sync. Sync the current programs first and do the full sync later in
        // the background.
        endMs = startMs + SHORT_SYNC_WINDOW_SEC * 1000;
    }
    for (int i = 0; i < channelMap.size(); ++i) {
        Uri channelUri = TvContract.buildChannelUri(channelMap.keyAt(i));
        if (isCancelled()) {
            return null;
        }
        List<Program> programs = getPrograms(channelUri, channelMap.valueAt(i),
                listings.programs, startMs, endMs);
        // Double check if the job is cancelled, so that this task can be finished faster
        // after cancel() is called.
        if (isCancelled()) {
            return null;
        }
        updatePrograms(channelUri, programs);
    }
    return null;
}
 
开发者ID:nejtv,项目名称:androidtv-sample,代码行数:44,代码来源:SyncJobService.java

示例9: performSync

import android.media.tv.TvContract; //导入方法依赖的package包/类
public void performSync(TvInputProvider provider, String inputId) {
    Log.d(TAG, "Actually begin the sync");
    List<Channel> allChannels = provider.getAllChannels(getContext());
    if(allChannels == null) {
        //You have no channels!!
        return;
    }
    Log.d(TAG, allChannels.toString());
    for (int i = 0; i < allChannels.size(); i++) {
        if (allChannels.get(i).getOriginalNetworkId() == 0)
            allChannels.get(i).setOriginalNetworkId(i + 1);
        if (allChannels.get(i).getTransportStreamId() == 0)
            allChannels.get(i).setTransportStreamId(i + 1);
    }
    TvContractUtils.updateChannels(getContext(), inputId, allChannels);

    LongSparseArray<Channel> channelMap = TvContractUtils.buildChannelMap(
            mContext.getContentResolver(), inputId, allChannels);
    if (channelMap == null) {
        Log.d(TAG, "?");
        Handler h = new Handler(Looper.getMainLooper()) {
            @Override
            public void handleMessage(Message msg) {
                super.handleMessage(msg);
                Toast.makeText(getContext(), "Couldn't find any channels. Uh-oh.", Toast.LENGTH_SHORT).show();
            }
        };
        h.sendEmptyMessage(0);
        //Let's not continue running
        return;
    }
    long startMs = new Date().getTime();
    long endMs = startMs + FULL_SYNC_WINDOW_SEC * 1000;
    Log.d(TAG, "Now start to get programs");
    for (int i = 0; i < channelMap.size(); ++i) {
        Uri channelUri = TvContract.buildChannelUri(channelMap.keyAt(i));
        List<Program> programList = provider.getProgramsForChannel(getContext(), channelUri, channelMap.valueAt(i), startMs, endMs);
        Log.d(TAG, "Okay, we NEED to set the channel id first");
        for(Program p: programList) {
            p.setChannelId(channelMap.keyAt(i));
        }
        Log.d(TAG, "For " + channelMap.valueAt(i).toString());
        Log.d(TAG, programList.toString());
        updatePrograms(channelUri, programList);
        //Let's double check programs
        Uri programEditor = TvContract.buildProgramsUriForChannel(channelUri);
    }
    Log.d(TAG, "Sync performed");
}
 
开发者ID:Fleker,项目名称:ChannelSurfer,代码行数:50,代码来源:SyncAdapter.java

示例10: doInBackground

import android.media.tv.TvContract; //导入方法依赖的package包/类
@Override
public Void doInBackground(Void... voids) {
    PersistableBundle extras = params.getExtras();
    mInputId = extras.getString(BUNDLE_KEY_INPUT_ID);
    if (mInputId == null) {
        broadcastError(ERROR_INPUT_ID_NULL);
        return null;
    }

    if (isCancelled()) {
        broadcastError(ERROR_EPG_SYNC_CANCELED);
        return null;
    }

    List<Channel> tvChannels = getChannels();
    TvContractUtils.updateChannels(mContext, mInputId, tvChannels);
    LongSparseArray<Channel> channelMap = TvContractUtils.buildChannelMap(
            mContext.getContentResolver(), mInputId);
    if (channelMap == null) {
        broadcastError(ERROR_NO_CHANNELS);
        return null;
    }
    // Default to one hour sync
    long durationMs = extras.getLong(
            BUNDLE_KEY_SYNC_PERIOD, DEFAULT_IMMEDIATE_EPG_DURATION_MILLIS);
    long startMs = System.currentTimeMillis();
    long endMs = startMs + durationMs;
    for (int i = 0; i < channelMap.size(); ++i) {
        Uri channelUri = TvContract.buildChannelUri(channelMap.keyAt(i));
        if (isCancelled()) {
            broadcastError(ERROR_EPG_SYNC_CANCELED);
            return null;
        }
        List<Program> programs = getProgramsForChannel(channelUri, channelMap.valueAt(i),
                startMs, endMs);
        if (DEBUG) {
            Log.d(TAG, programs.toString());
        }
        for (int index = 0; index < programs.size(); index++) {
            if (programs.get(index).getChannelId() == -1) {
                // Automatically set the channel id if not set
                programs.set(index,
                        new Program.Builder(programs.get(index))
                                .setChannelId(channelMap.valueAt(i).getId())
                                .build());
            }
        }

        // Double check if the job is cancelled, so that this task can be finished faster
        // after cancel() is called.
        if (isCancelled()) {
            broadcastError(ERROR_EPG_SYNC_CANCELED);
            return null;
        }
        updatePrograms(channelUri,
                getPrograms(channelMap.valueAt(i), programs, startMs, endMs));
        Intent intent = new Intent(ACTION_SYNC_STATUS_CHANGED);
        intent.putExtra(EpgSyncJobService.BUNDLE_KEY_INPUT_ID, mInputId);
        intent.putExtra(EpgSyncJobService.BUNDLE_KEY_CHANNELS_SCANNED, i);
        intent.putExtra(EpgSyncJobService.BUNDLE_KEY_CHANNEL_COUNT, channelMap.size());
        intent.putExtra(EpgSyncJobService.BUNDLE_KEY_SCANNED_CHANNEL_DISPLAY_NAME,
                channelMap.valueAt(i).getDisplayName());
        intent.putExtra(EpgSyncJobService.BUNDLE_KEY_SCANNED_CHANNEL_DISPLAY_NUMBER,
                channelMap.valueAt(i).getDisplayNumber());
        intent.putExtra(EpgSyncJobService.SYNC_STATUS, EpgSyncJobService.SYNC_SCANNED);
        LocalBroadcastManager.getInstance(mContext).sendBroadcast(intent);
    }
    return null;
}
 
开发者ID:googlesamples,项目名称:androidtv-sample-inputs,代码行数:70,代码来源:EpgSyncJobService.java


注:本文中的android.media.tv.TvContract.buildChannelUri方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。