实例介绍
一部分是工具类MonitorAlarmUtil,另一部分是接口IAlarmService。 MonitorAlarmUtil中有注册和注销两个方法,可以开启和关闭摄像头的报警布防功能;IAlarmService主要有一个待重写方法,实现之后可以获取抓拍得到的图片。
【实例截图】
【核心代码】
monitoralarm
└── monitoralarm
├── jar
│ └── alarm-1.0-SNAPSHOT.jar
├── lib
│ ├── AudioRender.dll
│ ├── examples.jar
│ ├── HCCore.dll
│ ├── HCNetSDKCom
│ │ ├── AnalyzeData.dll
│ │ ├── AudioIntercom.dll
│ │ ├── HCAlarm.dll
│ │ ├── HCAlarm.lib
│ │ ├── HCCoreDevCfg.dll
│ │ ├── HCDisplay.dll
│ │ ├── HCGeneralCfgMgr.dll
│ │ ├── HCGeneralCfgMgr.lib
│ │ ├── HCIndustry.dll
│ │ ├── HCPlayBack.dll
│ │ ├── HCPreview.dll
│ │ ├── HCPreview.lib
│ │ ├── HCVoiceTalk.dll
│ │ ├── libiconv2.dll
│ │ ├── OpenAL32.dll
│ │ ├── StreamTransClient.dll
│ │ └── SystemTransform.dll
│ ├── HCNetSDK.dll
│ ├── jna.jar
│ ├── PlayCtrl.dll
│ └── SuperRender.dll
├── META-INF
│ └── MANIFEST.MF
├── monitoralarm.iml
├── out
│ └── production
│ └── monitoralarm
│ └── com
│ └── cloume
│ └── monitoralarm
│ ├── main.class
│ ├── service
│ │ ├── AlarmService.class
│ │ └── IAlarmService.class
│ └── util
│ ├── GDI32.class
│ ├── HCNetSDK$byte96.class
│ ├── HCNetSDK$CAPTURE_MODE.class
│ ├── HCNetSDK$CARDRIGHTPLAN.class
│ ├── HCNetSDK$DISPLAY_MODE.class
│ ├── HCNetSDK$FColGlobalDataCallBack.class
│ ├── HCNetSDK$FColLocalDataCallBack.class
│ ├── HCNetSDK$FDrawFun.class
│ ├── HCNetSDK$FExceptionCallBack.class
│ ├── HCNetSDK$fGPSDataCallback.class
│ ├── HCNetSDK$FJpegdataCallBack.class
│ ├── HCNetSDK$FMessageCallBack.class
│ ├── HCNetSDK$FMessCallBack.class
│ ├── HCNetSDK$FMessCallBack_EX.class
│ ├── HCNetSDK$FMessCallBack_NEW.class
│ ├── HCNetSDK$FMSGCallBack.class
│ ├── HCNetSDK$FMSGCallBack_V31.class
│ ├── HCNetSDK$FPlayDataCallBack.class
│ ├── HCNetSDK$FPostMessageCallBack.class
│ ├── HCNetSDK$FRealDataCallBack_V30.class
│ ├── HCNetSDK$FRemoteConfigCallback.class
│ ├── HCNetSDK$FRowDataCallBack.class
│ ├── HCNetSDK$FSerialDataCallBack.class
│ ├── HCNetSDK$FStdDataCallBack.class
│ ├── HCNetSDK$FVoiceDataCallBack2.class
│ ├── HCNetSDK$FVoiceDataCallBack.class
│ ├── HCNetSDK$FVoiceDataCallBack_MR.class
│ ├── HCNetSDK$FVoiceDataCallBack_MR_V30.class
│ ├── HCNetSDK$FVoiceDataCallBack_V30.class
│ ├── HCNetSDK$GpsDataParamUion.class
│ ├── HCNetSDK$NET_DVR_ACS_ALARM_INFO.class
│ ├── HCNetSDK$NET_DVR_ACS_EVENT_INFO.class
│ ├── HCNetSDK$NET_DVR_ADDIT_POSITION.class
│ ├── HCNetSDK$NET_DVR_AID_ALARM_V41.class
│ ├── HCNetSDK$NET_DVR_AID_INFO.class
│ ├── HCNetSDK$NET_DVR_ALARMER.class
│ ├── HCNetSDK$NET_DVR_ALARMINCFG.class
│ ├── HCNetSDK$NET_DVR_ALARMINCFG_V30.class
│ ├── HCNetSDK$NET_DVR_ALARMINFO.class
│ ├── HCNetSDK$NET_DVR_ALARMINFO_EX.class
│ ├── HCNetSDK$NET_DVR_ALARMINFO_V30.class
│ ├── HCNetSDK$NET_DVR_ALARMOUTCFG.class
│ ├── HCNetSDK$NET_DVR_ALARMOUTCFG_V30.class
│ ├── HCNetSDK$NET_DVR_ALARMOUTSTATUS.class
│ ├── HCNetSDK$NET_DVR_ALARMOUTSTATUS_V30.class
│ ├── HCNetSDK$NET_DVR_AREAINFOCFG.class
│ ├── HCNetSDK$NET_DVR_AUXOUTCFG.class
│ ├── HCNetSDK$NET_DVR_CARD_CFG.class
│ ├── HCNetSDK$NET_DVR_CARD_CFG_COND.class
│ ├── HCNetSDK$NET_DVR_CARD_CFG_SEND_DATA.class
│ ├── HCNetSDK$NET_DVR_CARDINFO.class
│ ├── HCNetSDK$NET_DVR_CHANNEL_GROUP.class
│ ├── HCNetSDK$NET_DVR_CHANNELSTATE.class
│ ├── HCNetSDK$NET_DVR_CHANNELSTATE_V30.class
│ ├── HCNetSDK$NET_DVR_CLIENTINFO.class
│ ├── HCNetSDK$NET_DVR_COLOR.class
│ ├── HCNetSDK$NET_DVR_COMPRESSION_AUDIO.class
│ ├── HCNetSDK$NET_DVR_COMPRESSIONCFG.class
│ ├── HCNetSDK$NET_DVR_COMPRESSIONCFG_EX.class
│ ├── HCNetSDK$NET_DVR_COMPRESSIONCFG_NEW.class
│ ├── HCNetSDK$NET_DVR_COMPRESSIONCFG_V30.class
│ ├── HCNetSDK$NET_DVR_COMPRESSION_INFO.class
│ ├── HCNetSDK$NET_DVR_COMPRESSION_INFO_EX.class
│ ├── HCNetSDK$NET_DVR_COMPRESSION_INFO_V30.class
│ ├── HCNetSDK$NET_DVR_CRUISE_PARA.class
│ ├── HCNetSDK$NET_DVR_CRUISE_POINT.class
│ ├── HCNetSDK$NET_DVR_CRUISE_RET.class
│ ├── HCNetSDK$NET_DVR_DATE.class
│ ├── HCNetSDK$NET_DVR_DDNS.class
│ ├── HCNetSDK$NET_DVR_DDNSPARA.class
│ ├── HCNetSDK$NET_DVR_DDNSPARA_EX.class
│ ├── HCNetSDK$NET_DVR_DDNSPARA_V30.class
│ ├── HCNetSDK$NET_DVR_DECCFG.class
│ ├── HCNetSDK$NET_DVR_DECCHANINFO.class
│ ├── HCNetSDK$NET_DVR_DECCHANSTATUS$objectInfo$fileInfo.class
│ ├── HCNetSDK$NET_DVR_DECCHANSTATUS$objectInfo$timeInfo.class
│ ├── HCNetSDK$NET_DVR_DECCHANSTATUS$objectInfo$userInfo.class
│ ├── HCNetSDK$NET_DVR_DECCHANSTATUS$objectInfo.class
│ ├── HCNetSDK$NET_DVR_DECCHANSTATUS.class
│ ├── HCNetSDK$NET_DVR_DECINFO.class
│ ├── HCNetSDK$NET_DVR_DECODERCFG.class
│ ├── HCNetSDK$NET_DVR_DECODERCFG_V30.class
│ ├── HCNetSDK$NET_DVR_DECODERINFO.class
│ ├── HCNetSDK$NET_DVR_DECODERSTATE.class
│ ├── HCNetSDK$NET_DVR_DECSTATUS.class
│ ├── HCNetSDK$NET_DVR_DEVICECFG.class
│ ├── HCNetSDK$NET_DVR_DEVICEINFO.class
│ ├── HCNetSDK$NET_DVR_DEVICEINFO_V30.class
│ ├── HCNetSDK$NET_DVR_DIRECTION.class
│ ├── HCNetSDK$NET_DVR_DISKSTATE.class
│ ├── HCNetSDK$NET_DVR_DISPLAY_PARA.class
│ ├── HCNetSDK$NET_DVR_EMAILCFG.class
│ ├── HCNetSDK$NET_DVR_EMAILCFG_V30.class
│ ├── HCNetSDK$NET_DVR_EMAILPARA.class
│ ├── HCNetSDK$NET_DVR_ETHERNET.class
│ ├── HCNetSDK$NET_DVR_ETHERNET_V30.class
│ ├── HCNetSDK$NET_DVR_EXCEPTION.class
│ ├── HCNetSDK$NET_DVR_EXCEPTION_V30.class
│ ├── HCNetSDK$NET_DVR_FILECOND.class
│ ├── HCNetSDK$NET_DVR_FINDDATA_CARD.class
│ ├── HCNetSDK$NET_DVR_FIND_DATA.class
│ ├── HCNetSDK$NET_DVR_FINDDATA_V30.class
│ ├── HCNetSDK$NET_DVR_FRAMEFORMAT.class
│ ├── HCNetSDK$NET_DVR_FRAMEFORMAT_EX.class
│ ├── HCNetSDK$NET_DVR_FRAMEFORMAT_V30.class
│ ├── HCNetSDK$NET_DVR_FRAMETYPECODE.class
│ ├── HCNetSDK$NET_DVR_FTPTYPECODE.class
│ ├── HCNetSDK$NET_DVR_GET_GPS_DATA_PARAM.class
│ ├── HCNetSDK$NET_DVR_GPS_DATA.class
│ ├── HCNetSDK$NET_DVR_GPS_INFO.class
│ ├── HCNetSDK$NET_DVR_HANDLEEXCEPTION.class
│ ├── HCNetSDK$NET_DVR_HANDLEEXCEPTION_V30.class
│ ├── HCNetSDK$NET_DVR_HANDLEEXCEPTION_V40.class
│ ├── HCNetSDK$NET_DVR_HDCFG.class
│ ├── HCNetSDK$NET_DVR_HDGROUP_CFG.class
│ ├── HCNetSDK$NET_DVR_HIDEALARM.class
│ ├── HCNetSDK$NET_DVR_HIDEALARM_V30.class
│ ├── HCNetSDK$NET_DVR_ID_CARD_INFO_ALARM.class
│ ├── HCNetSDK$NET_DVR_ID_CARD_INFO.class
│ ├── HCNetSDK$NET_DVR_IPADDR.class
│ ├── HCNetSDK$NET_DVR_IPALARMINCFG.class
│ ├── HCNetSDK$NET_DVR_IPALARMINFO.class
│ ├── HCNetSDK$NET_DVR_IPALARMININFO.class
│ ├── HCNetSDK$NET_DVR_IPALARMOUTCFG.class
│ ├── HCNetSDK$NET_DVR_IPALARMOUTINFO.class
│ ├── HCNetSDK$NET_DVR_IPCHANINFO.class
│ ├── HCNetSDK$NET_DVR_IPDEVINFO.class
│ ├── HCNetSDK$NET_DVR_IPPARACFG.class
│ ├── HCNetSDK$NET_DVR_JPEGPARA.class
│ ├── HCNetSDK$NET_DVR_LANE_PARAM_V41.class
│ ├── HCNetSDK$NET_DVR_LANE_QUEUE.class
│ ├── HCNetSDK$NET_DVR_LOG.class
│ ├── HCNetSDK$NET_DVR_LOG_V30.class
│ ├── HCNetSDK$NET_DVR_MATRIX_COLUMN_ELEMENT.class
│ ├── HCNetSDK$NET_DVR_MATRIX_DEC_CHAN_INFO.class
│ ├── HCNetSDK$NET_DVR_MATRIX_DECCHANINFO.class
│ ├── HCNetSDK$NET_DVR_MATRIX_DEC_CHAN_STATUS.class
│ ├── HCNetSDK$NET_DVR_MATRIX_DECINFO.class
│ ├── HCNetSDK$NET_DVR_MATRIX_DEC_REMOTE_PLAY.class
│ ├── HCNetSDK$NET_DVR_MATRIX_DEC_REMOTE_PLAY_CONTROL.class
│ ├── HCNetSDK$NET_DVR_MATRIX_DEC_REMOTE_PLAY_STATUS.class
│ ├── HCNetSDK$NET_DVR_MATRIX_DYNAMIC_DEC.class
│ ├── HCNetSDK$NET_DVR_MATRIX_GLOBAL_COLUMN_ELEMENT.class
│ ├── HCNetSDK$NET_DVR_MATRIX_LOCAL_HOST_INFO.class
│ ├── HCNetSDK$NET_DVR_MATRIX_LOOP_DECINFO.class
│ ├── HCNetSDK$NET_DVR_MATRIX_LOOP_PLAY_SET.class
│ ├── HCNetSDK$NET_DVR_MATRIXPARA.class
│ ├── HCNetSDK$NET_DVR_MATRIXPARA_V30.class
│ ├── HCNetSDK$NET_DVR_MATRIX_PASSIVEMODE.class
│ ├── HCNetSDK$NET_DVR_MATRIX_PREVIEW_DISP_CHAN.class
│ ├── HCNetSDK$NET_DVR_MATRIX_ROW_COLUMN_LINK.class
│ ├── HCNetSDK$NET_DVR_MATRIX_ROW_ELEMENT.class
│ ├── HCNetSDK$NET_DVR_MATRIX_ROW_INDEX.class
│ ├── HCNetSDK$NET_DVR_MATRIX_TRAN_CHAN_CONFIG.class
│ ├── HCNetSDK$NET_DVR_MATRIX_TRAN_CHAN_INFO.class
│ ├── HCNetSDK$NET_DVR_MOTION.class
│ ├── HCNetSDK$NET_DVR_MOTION_V30.class
│ ├── HCNetSDK$NET_DVR_NETAPPCFG.class
│ ├── HCNetSDK$NET_DVR_NETCFG.class
│ ├── HCNetSDK$NET_DVR_NETCFG_OTHER.class
│ ├── HCNetSDK$NET_DVR_NETCFG_V30.class
│ ├── HCNetSDK$NET_DVR_NFSCFG.class
│ ├── HCNetSDK$NET_DVR_NTPPARA.class
│ ├── HCNetSDK$NET_DVR_PDC_ALRAM_INFO.class
│ ├── HCNetSDK$NET_DVR_PICCFG.class
│ ├── HCNetSDK$NET_DVR_PICCFG_EX.class
│ ├── HCNetSDK$NET_DVR_PICCFG_V30.class
│ ├── HCNetSDK$NET_DVR_PLATE_INFO.class
│ ├── HCNetSDK$NET_DVR_PLATE_RESULT.class
│ ├── HCNetSDK$NET_DVR_PLAYREMOTEFILE$mode_size$bytime.class
│ ├── HCNetSDK$NET_DVR_PLAYREMOTEFILE$mode_size.class
│ ├── HCNetSDK$NET_DVR_PLAYREMOTEFILE.class
│ ├── HCNetSDK$NET_DVR_POINT_FRAME.class
│ ├── HCNetSDK$NET_DVR_PORTCFG.class
│ ├── HCNetSDK$NET_DVR_PORTINFO.class
│ ├── HCNetSDK$NET_DVR_PPPCFG.class
│ ├── HCNetSDK$NET_DVR_PPPCFG_V30.class
│ ├── HCNetSDK$NET_DVR_PPPOECFG.class
│ ├── HCNetSDK$NET_DVR_PREVIEWCFG.class
│ ├── HCNetSDK$NET_DVR_PREVIEWCFG_V30.class
│ ├── HCNetSDK$NET_DVR_PTZCFG.class
│ ├── HCNetSDK$NET_DVR_PTZPOS.class
│ ├── HCNetSDK$NET_DVR_PTZ_PROTOCOL.class
│ ├── HCNetSDK$NET_DVR_PTZSCOPE.class
│ ├── HCNetSDK$NET_DVR_RECCOMPRESSIONCFG_EX.class
│ ├── HCNetSDK$NET_DVRRECEIVER.class
│ ├── HCNetSDK$NET_DVR_RECORD.class
│ ├── HCNetSDK$NET_DVR_RECORDDAY.class
│ ├── HCNetSDK$NET_DVR_RECORDSCHED.class
│ ├── HCNetSDK$NET_DVR_RECORDSCHEDWEEK.class
│ ├── HCNetSDK$NET_DVR_RECORD_V30.class
│ ├── HCNetSDK$NET_DVR_RS232CFG.class
│ ├── HCNetSDK$NET_DVR_RS232CFG_V30.class
│ ├── HCNetSDK$NET_DVR_RTSPCFG.class
│ ├── HCNetSDK$NET_DVR_SCALECFG.class
│ ├── HCNetSDK$NET_DVR_SCENE_INFO.class
│ ├── HCNetSDK$NET_DVR_SCHEDTIME.class
│ ├── HCNetSDK$NET_DVR_SCHEDTIMEWEEK.class
│ ├── HCNetSDK$NET_DVR_SDKABL.class
│ ├── HCNetSDK$NET_DVR_SDKSTATE.class
│ ├── HCNetSDK$NET_DVR_SENDER.class
│ ├── HCNetSDK$NET_DVR_SETUPALARM_PARAM.class
│ ├── HCNetSDK$NET_DVR_SHELTER.class
│ ├── HCNetSDK$NET_DVR_SHOWSTRING.class
│ ├── HCNetSDK$NET_DVR_SHOWSTRING_EX.class
│ ├── HCNetSDK$NET_DVR_SHOWSTRINGINFO.class
│ ├── HCNetSDK$NET_DVR_SHOWSTRING_V30.class
│ ├── HCNetSDK$NET_DVR_SINGLE_HD.class
│ ├── HCNetSDK$NET_DVR_SINGLE_HDGROUP.class
│ ├── HCNetSDK$NET_DVR_SINGLE_NFS.class
│ ├── HCNetSDK$NET_DVR_SINGLE_RS232.class
│ ├── HCNetSDK$NET_DVR_SNAPCFG.class
│ ├── HCNetSDK$NET_DVR_STATFRAME.class
│ ├── HCNetSDK$NET_DVR_STATTIME.class
│ ├── HCNetSDK$NET_DVR_STRING_POINTER.class
│ ├── HCNetSDK$NET_DVR_TFS_ALARM.class
│ ├── HCNetSDK$NET_DVR_TIME.class
│ ├── HCNetSDK$NET_DVR_TIME_EX.class
│ ├── HCNetSDK$NET_DVR_TIMEPOINT.class
│ ├── HCNetSDK$NET_DVR_TIME_V30.class
│ ├── HCNetSDK$NET_DVR_TPS_ALARM_V41.class
│ ├── HCNetSDK$NET_DVR_TPS_INFO_V41.class
│ ├── HCNetSDK$NET_DVR_TRADEINFO.class
│ ├── HCNetSDK$NET_DVR_USER.class
│ ├── HCNetSDK$NET_DVR_USER_EX.class
│ ├── HCNetSDK$NET_DVR_USER_INFO.class
│ ├── HCNetSDK$NET_DVR_USER_INFO_EX.class
│ ├── HCNetSDK$NET_DVR_USER_INFO_V30.class
│ ├── HCNetSDK$NET_DVR_USER_V30.class
│ ├── HCNetSDK$NET_DVR_VALID_PERIOD_CFG.class
│ ├── HCNetSDK$NET_DVR_VEHICLE_INFO.class
│ ├── HCNetSDK$NET_DVR_VGAPARA.class
│ ├── HCNetSDK$NET_DVR_VICOLOR.class
│ ├── HCNetSDK$NET_DVR_VIDEOOUT.class
│ ├── HCNetSDK$NET_DVR_VIDEOOUT_V30.class
│ ├── HCNetSDK$NET_DVR_VILOST.class
│ ├── HCNetSDK$NET_DVR_VILOST_V30.class
│ ├── HCNetSDK$NET_DVR_VOOUT.class
│ ├── HCNetSDK$NET_DVR_WORKSTATE.class
│ ├── HCNetSDK$NET_DVR_WORKSTATE_V30.class
│ ├── HCNetSDK$NET_DVR_XML_CONFIG_INPUT.class
│ ├── HCNetSDK$NET_DVR_XML_CONFIG_OUTPUT.class
│ ├── HCNetSDK$NET_DVR_ZONEANDDST.class
│ ├── HCNetSDK$NET_ITS_PARK_VEHICLE.class
│ ├── HCNetSDK$NET_ITS_PICTURE_INFO.class
│ ├── HCNetSDK$NET_ITS_PLATE_RESULT.class
│ ├── HCNetSDK$NET_VCA_AREA.class
│ ├── HCNetSDK$NET_VCA_BLACKLIST_INFO_ALARM.class
│ ├── HCNetSDK$NET_VCA_BLACKLIST_INFO.class
│ ├── HCNetSDK$NET_VCA_DEV_INFO.class
│ ├── HCNetSDK$NET_VCA_EVENT_UNION.class
│ ├── HCNetSDK$NET_VCA_FACESNAP_INFO_ALARM.class
│ ├── HCNetSDK$NET_VCA_FACESNAP_MATCH_ALARM.class
│ ├── HCNetSDK$NET_VCA_FACESNAP_RESULT.class
│ ├── HCNetSDK$NET_VCA_HUMAN_ATTRIBUTE.class
│ ├── HCNetSDK$NET_VCA_HUMAN_FEATURE.class
│ ├── HCNetSDK$NET_VCA_LINE.class
│ ├── HCNetSDK$NET_VCA_POINT.class
│ ├── HCNetSDK$NET_VCA_POLYGON.class
│ ├── HCNetSDK$NET_VCA_RECT.class
│ ├── HCNetSDK$NET_VCA_RULE_ALARM.class
│ ├── HCNetSDK$NET_VCA_RULE_INFO.class
│ ├── HCNetSDK$NET_VCA_TARGET_INFO.class
│ ├── HCNetSDK$NET_VCA_TRAVERSE_PLANE.class
│ ├── HCNetSDK$NET_VCA_TRAVERSE_PLANE_DETECTION.class
│ ├── HCNetSDK$REALSOUND_MODE.class
│ ├── HCNetSDK$_SDK_NET_ENV.class
│ ├── HCNetSDK$SEND_MODE.class
│ ├── HCNetSDK$TimePointParam.class
│ ├── HCNetSDK$TimeSegParam.class
│ ├── HCNetSDK$TTY_CONFIG.class
│ ├── HCNetSDK$UNION_PDC_STATPARAM.class
│ ├── HCNetSDK.class
│ ├── MonitorAlarmUtil$1.class
│ ├── MonitorAlarmUtil$FMSGCallBack_V31.class
│ ├── MonitorAlarmUtil.class
│ ├── PlayCtrl.class
│ └── USER32.class
├── README.md
└── src
└── com
└── cloume
└── monitoralarm
├── main.java
├── service
│ ├── AlarmService.java
│ └── IAlarmService.java
└── util
├── HCNetSDK.java
└── MonitorAlarmUtil.java
19 directories, 314 files
标签:
相关软件
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论