本文整理汇总了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());
}
示例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);
}
}
示例3: getUri
import android.media.tv.TvContract; //导入方法依赖的package包/类
public Uri getUri() {
if (isPassthrough()) {
return TvContract.buildChannelUriForPassthroughInput(mInputId);
} else {
return TvContract.buildChannelUri(mId);
}
}
示例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;
}
示例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());
}
}
示例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);
}
示例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());
}
示例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;
}
示例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");
}
示例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;
}