add the voice send second

addvoice
李富 9 years ago
parent 6ec464ead7
commit 67c0a357c7

@ -5,6 +5,7 @@
<uses-sdk
android:minSdkVersion="9"
android:targetSdkVersion="14" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.INTERNET" />
<!-- 监听网络的变化 -->

@ -1,7 +1,11 @@
package cn.bmob.imdemo.ui;
import android.content.Context;
import android.graphics.Color;
import android.graphics.drawable.AnimationDrawable;
import android.graphics.drawable.Drawable;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.os.Handler;
import android.os.Message;
import android.os.Bundle;
@ -34,6 +38,8 @@ import com.baidu.mapapi.model.LatLng;
import com.baidu.mapapi.utils.DistanceUtil;
import com.orhanobut.logger.Logger;
import java.io.File;
import java.io.FileInputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedList;
@ -52,6 +58,7 @@ import cn.bmob.newim.bean.BmobIMAudioMessage;
import cn.bmob.newim.bean.BmobIMConversation;
import cn.bmob.newim.bean.BmobIMLocationMessage;
import cn.bmob.newim.bean.BmobIMMessage;
import cn.bmob.newim.core.BmobDownloadManager;
import cn.bmob.newim.core.BmobIMClient;
import cn.bmob.newim.core.BmobRecordManager;
import cn.bmob.newim.event.MessageEvent;
@ -66,6 +73,10 @@ public class LocActivity extends ParentWithNaviActivity implements ObseverListen
public BaiduMap mBaiduMap = null;
public LocationClient mLocationClient = null;
public BDLocationListener myListener = new MyLocationListener();
BmobIMAudioMessage audio_msg;
MediaPlayer mediaPlayer = null;
Context mContext;
@Bind(R.id.btn_speak)
Button btn_speak;
@ -97,6 +108,8 @@ public class LocActivity extends ParentWithNaviActivity implements ObseverListen
SDKInitializer.initialize(getApplicationContext());
mLocationClient.registerLocationListener(myListener);
mContext = getApplicationContext();
setContentView(R.layout.activity_loc);
c = BmobIMConversation.obtain(BmobIMClient.getInstance(), (BmobIMConversation) getBundle().getSerializable("c"));
BmobIM.getInstance().addMessageListHandler(this);
@ -313,28 +326,6 @@ public class LocActivity extends ParentWithNaviActivity implements ObseverListen
}
};
}
@Override
protected void onDestroy() {
super.onDestroy();
mLocationClient.unRegisterLocationListener( myListener );
mLocationClient.stop();
// 当不需要定位图层时关闭定位图层
mBaiduMap.setMyLocationEnabled(false);
//在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理
mMapView.onDestroy();
}
@Override
protected void onResume() {
super.onResume();
//在activity执行onResume时执行mMapView. onResume (),实现地图生命周期管理
mMapView.onResume();
}
@Override
protected void onPause() {
super.onPause();
//在activity执行onPause时执行mMapView. onPause (),实现地图生命周期管理
mMapView.onPause();
}
@Override
protected String title() {
@ -527,22 +518,104 @@ public class LocActivity extends ParentWithNaviActivity implements ObseverListen
}
private void process_recv_msg(MessageEvent event) {
Logger.i( "we are in process recv msg\n");
BmobIMMessage msg =event.getMessage();
Logger.i( msg.getMsgType() );
if( msg.getMsgType().equals("location")) {
Logger.i( "获取的msg的类型:" + msg.getMsgType() );
BmobIMLocationMessage recv_loc_msg = BmobIMLocationMessage.buildFromDB( msg );
friend_loc = new LatLng(recv_loc_msg.getLatitude(), recv_loc_msg.getLongitude());
refresh_map();
}
else if ( msg.getMsgType().equals("audio")){
else if ( msg.getMsgType().equals("sound")){
audio_msg = BmobIMAudioMessage.buildFromDB(true,msg);
String localPath = BmobDownloadManager.getDownLoadFilePath(audio_msg);
startPlayRecord(localPath, true);
}
}
public void startPlayRecord(String filePath, boolean isUseSpeaker) {
if (!(new File(filePath).exists())) {
return;
}
Logger.i("start play Record ");
/*AudioManager audioManager = (AudioManager) mContext
.getSystemService(Context.AUDIO_SERVICE);
mediaPlayer = new MediaPlayer();
if (isUseSpeaker) {
audioManager.setMode(AudioManager.MODE_NORMAL);
audioManager.setSpeakerphoneOn(true);
mediaPlayer.setAudioStreamType(AudioManager.STREAM_RING);
} else {
audioManager.setSpeakerphoneOn(false);
audioManager.setMode(AudioManager.MODE_IN_CALL);
mediaPlayer.setAudioStreamType(AudioManager.STREAM_VOICE_CALL);
}
try {
mediaPlayer.reset();
// 单独使用此方法会报错播放错误:setDataSourceFD failed.: status=0x80000000
// mediaPlayer.setDataSource(filePath);
// 因此采用此方式会避免这种错误
FileInputStream fis = new FileInputStream(new File(filePath));
//mediaPlayer.setDataSource(fis.getFD());
mediaPlayer.setDataSource(filePath);
mediaPlayer.prepare();
mediaPlayer.start();
mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer arg0) {
arg0.start();
}
});
mediaPlayer
.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
stopPlayRecord();
}
});
} catch (Exception e) {
e.printStackTrace();
}*/
}
public void stopPlayRecord() {
if (mediaPlayer != null) {
mediaPlayer.stop();
}
}
class LocationEntity {
BDLocation location;
long time;
}
@Override
protected void onDestroy() {
super.onDestroy();
mLocationClient.unRegisterLocationListener( myListener );
mLocationClient.stop();
// 当不需要定位图层时关闭定位图层
mBaiduMap.setMyLocationEnabled(false);
//在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理
//mMapView.onDestroy();
}
@Override
protected void onResume() {
super.onResume();
//在activity执行onResume时执行mMapView. onResume (),实现地图生命周期管理
mMapView.onResume();
}
@Override
protected void onPause() {
super.onPause();
//在activity执行onPause时执行mMapView. onPause (),实现地图生命周期管理
mMapView.onPause();
}
}

@ -13,16 +13,6 @@
android:gravity="center_vertical"
android:orientation="horizontal">
<Button
android:id="@+id/btn_chat_voice"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_marginLeft="6dp"
android:background="@drawable/btn_chat_voice_selector"
android:gravity="center"
android:textColor="@color/base_color_text_black" >
</Button>
<Button
android:id="@+id/btn_chat_emo"
android:layout_width="30dp"
@ -47,25 +37,6 @@
android:text="@string/longclick_speak" >
</Button>
<Button
android:id="@+id/btn_chat_keyboard"
android:layout_width="30dp"
android:layout_height="30dp"
android:visibility="gone"
android:background="@drawable/btn_chat_keyboard_selector"
android:gravity="center"
android:textColor="@color/base_color_text_black" >
</Button>
<Button
android:id="@+id/btn_chat_send"
android:layout_width="30dp"
android:layout_height="30dp"
android:visibility="gone"
android:layout_marginLeft="@dimen/margin_10"
android:background="@drawable/btn_chat_send_selector"
android:gravity="center"
/>
</LinearLayout>
</LinearLayout>
</LinearLayout>
Loading…
Cancel
Save