开发记录(游戏开黑)
来源:互联网 发布:个人理财软件 编辑:程序博客网 时间:2024/05/14 14:17
实现核心组件:
1.http://gcloud.qq.com/ 游戏语音vioce
2.阿里云push (用于开黑成员加入 退出监听)
开黑语音核心代码
public class VoiceCore { private GCloudVoiceEngine voiceEngine; private boolean Going = true; private Context context; private LoadingDialog startDialog; private static VoiceCore _instance; public ChannelModel channelModel; public static synchronized VoiceCore getInstance(Context context) { if (_instance == null) { _instance = new VoiceCore(context); } return _instance; } private VoiceCore(Context context) { this.context = context; voiceEngine = GCloudVoiceEngine.getInstance(); voiceEngine.init(App.getContext(), (Activity) context); } public void Start(ChannelModel channelModel) { if (PackageManager.PERMISSION_GRANTED == ContextCompat.checkSelfPermission(context, Manifest.permission.RECORD_AUDIO)) { this.channelModel = channelModel; Auth(); } else { //提示用户开户权限音频 String[] perms = {"android.permission.RECORD_AUDIO"}; ActivityCompat.requestPermissions((Activity) context, perms, 1); } } private IGCloudVoiceNotify notify = new IGCloudVoiceNotify() { @Override public void OnJoinRoom(final int code, String s, int i1) { Log.e("code", code + " " + s + " " + i1); startDialog.cancel(); if (code == com.tencent.gcloud.voice.IGCloudVoiceNotify.GCloudVoiceCompleteCode.GV_ON_JOINROOM_SUCC) { Drive.getInstance(context).JoinRoom(channelModel.getId(), new Drive.BooleanListener() { @Override public void CallBack(boolean state) { if (state) { voiceEngine.OpenMic(); voiceEngine.OpenSpeaker(); Intent intent = new Intent(context, FloatWindowService.class); context.startService(intent); Drive.getInstance(context).SaveGangUpHistory(channelModel.getId(), channelModel.getAvatar()); } else { Show.getInstance(context).MsgShowSmall("提示", "进入房间失败01"); Going = false; voiceEngine.QuitRoom(channelModel.getId(), 6000); } } }); } else { Show.getInstance(context).MsgShowSmall("提示", "进入房间失败00"); } } @Override public void OnStatusUpdate(int i, String s, int i1) { } @Override public void OnQuitRoom(int i, String s) { Going = false; // startDialog.cancel(); } @Override public void OnMemberVoice(int[] ints, int i) { Log.e("UserCount", String.valueOf(ints.length) + " " + String.valueOf(i)); } @Override public void OnUploadFile(int i, String s, String s1) { } @Override public void OnDownloadFile(int i, String s, String s1) { } @Override public void OnPlayRecordedFile(int i, String s) { } @Override public void OnApplyMessageKey(int i) { } @Override public void OnSpeechToText(int i, String s, String s1) { } @Override public void OnRecording(String s, int i) { } }; private void Auth() { if (!UserManager.CheckUid(true)) { return; } voiceEngine.SetAppInfo(Config.GCloudID, Config.GCloudKEY, UserManager.GetUid()); voiceEngine.Init(); voiceEngine.SetNotify(notify); voiceEngine.SetMode(GCloudVoiceEngine.Mode.RealTime); startDialog = new LoadingDialog(context).builder(); startDialog.setTitle("正在初始化").show(); Going = true; handler.postDelayed(runnable, 3000); startDialog.setTitle("正在入房间").show(); voiceEngine.JoinTeamRoom(channelModel.getId(), 6000); } private Handler handler = new Handler(); private Runnable runnable = new Runnable() { @Override public void run() { // TODO Auto-generated method stub //要做的事情 Log.e("voiceCore", "Voide正在监听"); if (Going) { voiceEngine.Poll(); handler.postDelayed(this, 3000); } } }; public void Close(CloseListener listener) { //startDialog.setTitle("正在退出房间").show(); voiceEngine.QuitRoom(channelModel.getId(), 6000); voiceEngine.CloseMic(); voiceEngine.CloseSpeaker(); listener.Back(); } public interface CloseListener { void Back(); }}
开黑成员监听核心代码
MyMessageReceiver.OnChannelUpdateListener(new MyMessageReceiver.ChannelUpdate() { @Override public void CallBack(String content) { ChannelRefrash(); }});public void ChannelRefrash() { OkHttpUtils.post().url(Config.BaseApi) .addParams("action", "GetChannelUser") .addParams("roomid", VoiceCore.getInstance(context).channelModel.getId()) .build() .execute(new StringCallback() { @Override public void onError(Call call, Exception e, int id) { } @Override public void onResponse(String response, int id) { Log.e("ChannelRefrash", response); Resultresult = new Gson().fromJson(response, new TypeToken >() { }.getType()); if (result.code == 1) { userList.clear(); for (int i = 0; i < result.data.size(); i++) { NetBeans.ChannelUser model = result.data.get(i); userList.add(model); } adapter.notifyDataSetChanged(); } else { } } });}
MyMessageReceiver为阿里云push广播接收器 ,监听广播后执行刷新 成员列表
0 0
- 开发记录(游戏开黑)
- 游戏开发记录
- 游戏开发(三)——WIN32 黑白棋(二)——AI
- 游戏开发(三)——WIN32 黑白棋(三)——游戏画面的现实
- 黑白棋游戏 (codevs 2743)题解
- 【SDOI2011】黑白棋(Nim游戏&&DP)
- 临时记录:游戏开发注意
- [java]游戏开发攻略—黑杰克扑克牌
- Unity3d开发MOBA游戏类《王者荣耀》记录(一)
- Unity3d开发MOBA游戏类《王者荣耀》记录(一)
- 游戏开发(三)——WIN32 黑白棋(一)——棋局逻辑的设计
- 黑白棋游戏
- 黑白棋游戏
- iOS 黑白棋游戏
- UVa220 黑白棋游戏
- codevs2743 黑白棋游戏
- 黑白棋游戏程序
- 【9801】黑白棋游戏
- 嵌入式系统的基本概念
- Mybatis总结(2)---Mybatis全局配置文件SqlMapConfig.xml
- js取json对象的键和值
- Unity--旋转方法
- Assembly.Load,Assembly.LoadFrom,Assembly.LoadFile的简单用法
- 开发记录(游戏开黑)
- java操作pdf生成条形码与图片水印
- POJ 1011 Sticks(深搜+剪枝)
- Baxter机器人末端轨迹采集
- final
- 【Unity&AssetStore&工作室】商店里面不错的工作室
- Array
- 10大人生感悟助你走向成功之路
- BFS深度优先搜索 炸弹人