最近用腾讯游戏语音遇到的坑:
公司用的CocosCreator(JS)需要用到游戏语音
GVoice官方只有Cocos2d 的 C++文档和Unity3D的C#文档,
项目的Android在Android Studio开发,想着用JNI来写C++代码然后引用GVoice,也是第一次在AS上写C++代码,
各种问题接连出现,.h文件,C++代码中jar包引用不成功等等困扰了5天
最后才发现可以直接在AS上用Java写
进入正题,第一次在简书写文章有点小激动
1.腾讯语音下载SDk
下载Android SDk
2.解压后将libs文件夹放入Android Studio项目中
3.以下是Android Studio的所有有添加的代码
1)libs引入
app 的 build.gradle
sourceSets{
main.jniLibs.srcDirs= ['libs']
}
2).java 文件
packagecom.kunshan.mygvoice;
importandroid.support.v7.app.AppCompatActivity;
importandroid.os.Bundle;
importandroid.view.View;
importcom.tencent.gcloud.voice.GCloudVoiceEngine;
public classGVoiceActivityextendsAppCompatActivity {
privateGCloudVoiceEngineengine;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_gvoice);
GCloudVoiceEngine.getInstance().init(getApplicationContext(), this);
engine=GCloudVoiceEngine.getInstance();
engine.SetAppInfo("#APPID#","#APP_KEY#","31231232222223123"); //数字是OpenID,可根据比如微信登录的OPENID来唯一区分用户,APP_ID,APP_KEY需要去游戏语音官网,可以先用默认的免费应用
engine.Init();
engine.SetMode(GCloudVoiceEngine.Mode.RealTime);
engine.ApplyMessageKey(6000);
}
public void JoinRoom(View view){
engine.JoinTeamRoom("123",5000);
}
public void OpenMic(View view){
engine.OpenMic();
}
public void QuitMic(View view){
engine.CloseMic();
}
public void OpenSpeaker(View view){
engine.OpenSpeaker();
}
public void QuitSpeaker(View view){
engine.CloseSpeaker();
}
public void QuitRoom(View view){
engine.QuitRoom("123",5000);
}
}
3).manifests添加权限
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
4).布局文件
android:text="QuitMic"
android:layout_width="150dp"
android:layout_height="wrap_content"
android:layout_marginTop="17dp"
android:id="@+id/button5"
android:onClick="QuitMic" //每个按钮设置点击事件
android:layout_below="@+id/button2"
android:layout_alignLeft="@+id/button2"
android:layout_alignStart="@+id/button2"/>
网友评论
Activity的声明周期方法要不要调engine.Pause(); engine.Resume();
engine.Poll()调用的时机到底是什么,官方DEMO只是开了一个timerTask一直调用poll