|
|
@@ -1,387 +0,0 @@
|
|
|
-import TitleBar from './TitleBar'
|
|
|
-import { router } from '@kit.ArkUI';
|
|
|
-import { CommonConstants } from '../common/constants/CommonConstants';
|
|
|
-import Logger from '../common/util/Logger';
|
|
|
-import { VideoItem } from '../viewmodel/VideoItem';
|
|
|
-// import { AdSlot, AdSlotBuilder,
|
|
|
-// CSJAdCreator,
|
|
|
-// CSJAdSdk, CSJNativeExpressAd, NativeExpressAdListener } from '@csj/openadsdk';
|
|
|
-import { PrintBiddingTokenUtils } from '../common/util/PrintBiddintTokenUtils';
|
|
|
-import { ArrayList } from '@kit.ArkTS';
|
|
|
-import { CSJUtil } from '../common/util/CSJUtil';
|
|
|
-import { Utility } from '../common/util/Utility';
|
|
|
-import { DialogHelper } from '@pura/harmony-dialog';
|
|
|
-import { AppUtil, PreferencesUtil, StrUtil, ToastUtil } from '@pura/harmony-utils';
|
|
|
-import { common } from '@kit.AbilityKit';
|
|
|
-
|
|
|
-const context = getContext(this) as common.UIAbilityContext;
|
|
|
-@Preview
|
|
|
-@Component
|
|
|
-export struct StreamContent{
|
|
|
- @State bundleName:string =''
|
|
|
- @State textStr:string = ''
|
|
|
- @State videoInList: Array<VideoItem> = []
|
|
|
- @Consume isShowDrawer:boolean;
|
|
|
- @Consume offsetX: number ;
|
|
|
- @State titleBarModel: TitleBar.Model = new TitleBar.Model()
|
|
|
- .setTitleTextStyle(FontStyle.Normal)
|
|
|
- .setTitleBarStyle(TitleBar.BarStyle.TRANSPARENT)
|
|
|
- .setLeftIcon($r('app.media.menu'))
|
|
|
- .setLeftIconWidth(25)
|
|
|
- .setLeftIconHeight(25)
|
|
|
- .setTitleName("流媒体播放")
|
|
|
- .setTitleFontColor(Color.White)
|
|
|
- .setTitleBarBackground($r('app.color.title_bar_bg'))
|
|
|
- .setTitleBarBottomLineColor($r('app.color.title_bar_bg'))
|
|
|
-
|
|
|
- .setOnLeftClickListener(()=>{
|
|
|
-
|
|
|
- animateTo({ duration: 800 }, () => {
|
|
|
- // 动画闭包内控制Image组件的出现和消失
|
|
|
- this.isShowDrawer = true
|
|
|
- this.offsetX = 0
|
|
|
- })
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- })
|
|
|
-
|
|
|
-
|
|
|
- // 组件生命周期
|
|
|
- async aboutToAppear() {
|
|
|
- //穿山甲
|
|
|
- // this.loadBannerAd( CSJUtil.getBannerID())
|
|
|
- this.bundleName = await AppUtil.getBundleName()
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- // 组件消失生命周期
|
|
|
- aboutToDisappear() {
|
|
|
- console.info('LifeCycleComponent aboutToDisappear');
|
|
|
- }
|
|
|
-
|
|
|
- showHaopingDialog(){
|
|
|
-
|
|
|
-
|
|
|
- DialogHelper.showCustomContentDialog({
|
|
|
- dialogId:'haoping',
|
|
|
- title: "该功能免费",
|
|
|
- autoCancel: false, //点击遮障层时,不关闭弹窗
|
|
|
- backCancel: true, //点击返回键,不关闭弹窗
|
|
|
- contentBuilder: () => {
|
|
|
- this.customHaoPingBuilder("如果您觉得好用可以给个好评吗?谢谢!\n给个好评吧,非常感谢您的支持!")
|
|
|
- },
|
|
|
- buttons: [],
|
|
|
-
|
|
|
-
|
|
|
- })
|
|
|
-
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- doPlay(){
|
|
|
- if(StrUtil.isEmpty(this.textStr)){
|
|
|
- return
|
|
|
- }
|
|
|
- if(this.textStr.indexOf("douyin.com") !== -1)
|
|
|
- {
|
|
|
- ToastUtil.showToast('不支持抖音的复制的链接。')
|
|
|
- return
|
|
|
- }
|
|
|
- if(Utility.isHaoFreeTime()){
|
|
|
- let isHao:boolean = PreferencesUtil.getBooleanSync('is_haoping');
|
|
|
- if(!isHao){
|
|
|
- this.showHaopingDialog()
|
|
|
- return
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- let item = new VideoItem('',this.textStr,this.textStr,0,0,'')
|
|
|
- this.videoInList.push(item)
|
|
|
-
|
|
|
- router.pushUrl({ url: "pages/IjkVideoPlayerPage", params: {
|
|
|
- name: item.filePath,
|
|
|
- index: 0,
|
|
|
- playType:2,//0:连续播放 1:单片重复播放 2:正常播放
|
|
|
- videoUrl: item.filePath,
|
|
|
- globalVideoList: this.videoInList
|
|
|
- } }).catch((err: Error) => {
|
|
|
- Logger.error('[IndexTabLocalList] router error: ' + JSON.stringify(err))
|
|
|
- });
|
|
|
-
|
|
|
-
|
|
|
- // router.pushUrl({
|
|
|
- // url: CommonConstants.PAGE,
|
|
|
- // params: {
|
|
|
- // src: this.textStr,
|
|
|
- // iSrc: this.textStr,
|
|
|
- // index: 0,
|
|
|
- // type: CommonConstants.TYPE_INTERNET,
|
|
|
- // globalVideoList:this.videoInList
|
|
|
- // }
|
|
|
- // }).catch((err: Error) => {
|
|
|
- // Logger.error('[IndexTabLocalList] router error: ' + JSON.stringify(err))
|
|
|
- // });
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- //好评的自定义内容
|
|
|
- @Builder
|
|
|
- customHaoPingBuilder(content: string) {
|
|
|
- Column() {
|
|
|
- Text(content)
|
|
|
- .fontColor(Color.Gray)
|
|
|
- .fontSize(16)
|
|
|
- .alignSelf(ItemAlign.Start)
|
|
|
- .margin({bottom:15})
|
|
|
- .fontSize(16)
|
|
|
-
|
|
|
- Row(){
|
|
|
- Button('取消')
|
|
|
- .fontColor(Color.White)
|
|
|
- .backgroundColor($r('app.color.title_bar_bg'))
|
|
|
- //.linearGradient( { direction: GradientDirection.Right, colors:[['#ff37a0fc',0.0],['#67e667',0.5],['#f5856e',1.0]]})
|
|
|
- .height(50)
|
|
|
- .layoutWeight(1)
|
|
|
- .stateEffect(true)
|
|
|
- .margin({right:6})
|
|
|
- .onClick(()=>{
|
|
|
- DialogHelper.closeDialog('haoping'); //关闭弹框
|
|
|
- })
|
|
|
- Button('好评')
|
|
|
- .fontColor(Color.White)
|
|
|
- //.linearGradient( { direction: GradientDirection.Right, colors:[['#ff37a0fc',0.0],['#67e667',0.5],['#f5856e',1.0]]})
|
|
|
- .layoutWeight(1)
|
|
|
- .height(50)
|
|
|
- .backgroundColor($r('app.color.title_bar_bg'))
|
|
|
- .stateEffect(true)
|
|
|
- .margin({left:6})
|
|
|
- .onClick(()=>{
|
|
|
- DialogHelper.closeDialog('haoping'); //关闭弹框
|
|
|
- Utility.gotoMarket(context,this.bundleName)
|
|
|
- PreferencesUtil.putSync("is_haoping", true);
|
|
|
- })
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
- .width("100%")
|
|
|
- .padding(10)
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- build() {
|
|
|
-
|
|
|
- Scroll(){
|
|
|
- Column() {
|
|
|
- TitleBar({ model: $titleBarModel })
|
|
|
- Column(){
|
|
|
-
|
|
|
-
|
|
|
- Text('请在下方输入流媒体链接:')
|
|
|
- .fontSize(12)
|
|
|
- .fontWeight(300)
|
|
|
- .visibility(Visibility.None)
|
|
|
- .fontColor(Color.Grey)
|
|
|
- .margin({ top: 20,bottom:20 })
|
|
|
-
|
|
|
-
|
|
|
- TextArea({placeholder:'请在下方输入流媒体链接:如http://',text:CommonConstants.DEMO_MAGNET})
|
|
|
- .type(TextAreaType.NORMAL)
|
|
|
- .height(100)
|
|
|
- .maxLines(3)
|
|
|
- .margin({top:20,right:20,left:20})
|
|
|
- .onChange((val:string)=>{
|
|
|
- this.textStr = val
|
|
|
- })
|
|
|
-
|
|
|
- //穿山甲
|
|
|
- // if (this.isShowAd) {
|
|
|
- // NodeContainer(this.bannerAd.getAdComponent())
|
|
|
- // .width(this.mAdSlot.getAcceptWidth())
|
|
|
- // .height(this.mAdSlot.getAcceptHeight())
|
|
|
- // .alignSelf(ItemAlign.Center)
|
|
|
- // .align(Alignment.Center);
|
|
|
- // }
|
|
|
-
|
|
|
- Column() {
|
|
|
- Button('播放', { type: ButtonType.Capsule, stateEffect: true })
|
|
|
-
|
|
|
- .width('80%')
|
|
|
- .height(55)
|
|
|
- .margin({ top: 30, bottom: 20 })
|
|
|
- // .linearGradient({
|
|
|
- // direction: GradientDirection.Right,
|
|
|
- // colors: [['#ff37a0fc', 0.0], ['#f5856e', 0.5], ['#67e667', 1.0]]
|
|
|
- // })
|
|
|
- .backgroundColor($r('app.color.title_bar_bg'))
|
|
|
-
|
|
|
- .onClick(() => {
|
|
|
- this.doPlay()
|
|
|
-
|
|
|
- })
|
|
|
-
|
|
|
- }
|
|
|
- }
|
|
|
- .width('100%')
|
|
|
- .height('100%')
|
|
|
- .backgroundColor(Color.White)
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- //
|
|
|
- // /**
|
|
|
- // * 穿山甲banner广告
|
|
|
- // */
|
|
|
- // private declare bannerAd: CSJNativeExpressAd;
|
|
|
- // @State private status: string = "未加载"
|
|
|
- // @State private isShowAd: boolean = false
|
|
|
- // private declare mAdSlot: AdSlot;
|
|
|
- // private mBiddingAdm = '' //服务端bidding才需要设置
|
|
|
- // private expressLoadAdListener: NativeExpressAdListener = {
|
|
|
- // /**
|
|
|
- // * 加载失败的回调
|
|
|
- // *
|
|
|
- // * @param code
|
|
|
- // * @param message
|
|
|
- // */
|
|
|
- // onError: (code: number, message: string) => {
|
|
|
- // console.error("加载广告失败,code=" + code + ",message=" + message);
|
|
|
- // this.status = "加载广告失败,code=" + code + ",message=" + message;
|
|
|
- // },
|
|
|
- //
|
|
|
- // /**
|
|
|
- // * 广告加载成功的回调,接入方可以在这个回调中进行渲染
|
|
|
- // *
|
|
|
- // * @param ads 返回的广告列表
|
|
|
- // */
|
|
|
- //
|
|
|
- // onNativeExpressAdLoad: (ads: ArrayList<CSJNativeExpressAd>) => {
|
|
|
- // console.log("BannerExpressAdPage==onNativeExpressAdLoad......success");
|
|
|
- // if (ads && ads.length > 0) {
|
|
|
- // ads.forEach((ad: CSJNativeExpressAd, idx: number) => {
|
|
|
- // ad.setExpressInteractionListener({
|
|
|
- // /**
|
|
|
- // *广告的点击回调
|
|
|
- // * @param type 广告的交互类型
|
|
|
- // */
|
|
|
- // onAdClicked: (type: number) => {
|
|
|
- // console.log("BannerExpressAdPage==onAdClicked......");
|
|
|
- // },
|
|
|
- //
|
|
|
- // /**
|
|
|
- // * 广告的展示回调 每个广告仅回调一次
|
|
|
- // * @param type 广告的交互类型
|
|
|
- // */
|
|
|
- // onAdShow: (type: number) => {
|
|
|
- // console.log("BannerExpressAdPage==onAdShow......");
|
|
|
- // },
|
|
|
- //
|
|
|
- // /**
|
|
|
- // * 模板渲染失败
|
|
|
- // */
|
|
|
- // onRenderFail: (code: number, msg: string) => {
|
|
|
- // console.log("BannerExpressAdPage==onRenderFail...code=" + code + ",msg=" + msg);
|
|
|
- // },
|
|
|
- //
|
|
|
- // /**
|
|
|
- // * 模板渲染成功
|
|
|
- // * @param width 返回view的宽 单位 vp
|
|
|
- // * @param height 返回view的高 单位 vp
|
|
|
- // */
|
|
|
- // onRenderSuccess: (width: number, height: number) => {
|
|
|
- // console.log("BannerExpressAdPage==onRenderSuccess......width=" + width + ",height=" + height);
|
|
|
- // this.bannerAd = ad;
|
|
|
- // this.status = "广告加载完成待展示";
|
|
|
- //
|
|
|
- // this.showBannerAd()
|
|
|
- // }
|
|
|
- // })
|
|
|
- // //渲染广告
|
|
|
- // ad.setSlideIntervalTime(30 * 1000);//设置轮播时间长
|
|
|
- // this.setDislikeCallback(ad); //设置dislike
|
|
|
- // ad.render(this.getUIContext())
|
|
|
- // this.status = "广告加载中...";
|
|
|
- // });
|
|
|
- // }
|
|
|
- // }
|
|
|
- // }
|
|
|
- //
|
|
|
- // private setDislikeCallback(ad: CSJNativeExpressAd) {
|
|
|
- // ad.setDislikeCallback({
|
|
|
- // /**
|
|
|
- // * dislike show
|
|
|
- // */
|
|
|
- // onShow: () => {
|
|
|
- // console.log("BannerExpressAdPage==dislike......show");
|
|
|
- // },
|
|
|
- //
|
|
|
- // /**
|
|
|
- // * @param position 选择的位置
|
|
|
- // * @param value 选择的内容
|
|
|
- // * @param enforceRemove 是否强制关闭广告
|
|
|
- // */
|
|
|
- // onSelected: (position: number, value: string, enforceRemove: boolean) => {
|
|
|
- // this.isShowAd = false;
|
|
|
- // console.log("BannerExpressAdPage==dislike......onSelected:position=" + position + ",value:" + value + ",enforce=" + enforceRemove);
|
|
|
- // },
|
|
|
- //
|
|
|
- // /**
|
|
|
- // * 点击取消
|
|
|
- // */
|
|
|
- // onCancel: () => {
|
|
|
- // console.log("BannerExpressAdPage==dislike......onCancel");
|
|
|
- // }
|
|
|
- //
|
|
|
- // })
|
|
|
- // }
|
|
|
- //
|
|
|
- // /**
|
|
|
- // * 加载Banner广告
|
|
|
- // */
|
|
|
- // loadBannerAd(rit: string) {
|
|
|
- // if(!Utility.isNoble()){
|
|
|
- // return
|
|
|
- // }
|
|
|
- // if(!Utility.isPassInstallTime(2)){
|
|
|
- // return
|
|
|
- // }
|
|
|
- // // if(!Utility.isFreeTime())
|
|
|
- // // return
|
|
|
- // this.isShowAd = false;
|
|
|
- // let adCreator:CSJAdCreator = CSJAdSdk.getAdCreator()
|
|
|
- // this.mAdSlot = new AdSlotBuilder()
|
|
|
- // .setCodeId(rit)
|
|
|
- // .setAcceptSize(CSJUtil.BANNER_WIGTH, CSJUtil.BANNER_HEIGHT)
|
|
|
- // .setAdCount(1)
|
|
|
- // .setBidAdm(this.mBiddingAdm)
|
|
|
- // .build()
|
|
|
- // PrintBiddingTokenUtils.printBiddingToken(this.mAdSlot, adCreator);
|
|
|
- // adCreator.loadBannerAd(this.mAdSlot, this.expressLoadAdListener)
|
|
|
- // this.status = "广告加载中..."
|
|
|
- // }
|
|
|
- //
|
|
|
- // /**
|
|
|
- // * 展示Banner广告
|
|
|
- // */
|
|
|
- // showBannerAd() {
|
|
|
- // if (!this.bannerAd) {
|
|
|
- // return
|
|
|
- // }
|
|
|
- // this.isShowAd = true
|
|
|
- // this.status = "已展示"
|
|
|
- // }
|
|
|
- /**
|
|
|
- * 穿山甲广告代码结束
|
|
|
- */
|
|
|
-
|
|
|
-
|
|
|
-}
|