package org.linphone;
/*
ChatFragment.java
Copyright (C) 2017 Belledonne Communications, Grenoble, France
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
import android.Manifest;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.Dialog;
import android.app.Fragment;
import android.app.ProgressDialog;
import android.content.ClipData;
import android.content.ClipboardManager;
import android.content.Context;
import android.content.CursorLoader;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Matrix;
import android.graphics.Rect;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.media.ExifInterface;
import android.media.ThumbnailUtils;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Environment;
import android.os.Parcelable;
import android.provider.MediaStore;
import android.support.v4.content.FileProvider;
import android.text.Editable;
import android.text.Spanned;
import android.text.TextWatcher;
import android.text.method.LinkMovementMethod;
import android.view.ContextMenu;
import android.view.LayoutInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.view.ViewTreeObserver;
import android.view.WindowManager;
import android.view.inputmethod.InputMethodManager;
import android.webkit.MimeTypeMap;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.ProgressBar;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;
import org.linphone.compatibility.Compatibility;
import org.linphone.core.LinphoneAddress;
import org.linphone.core.LinphoneBuffer;
import org.linphone.core.LinphoneChatMessage;
import org.linphone.core.LinphoneChatMessage.State;
import org.linphone.core.LinphoneChatRoom;
import org.linphone.core.LinphoneContent;
import org.linphone.core.LinphoneCore;
import org.linphone.core.LinphoneCoreFactory;
import org.linphone.core.LinphoneCoreListenerBase;
import org.linphone.core.LinphoneFriend;
import org.linphone.mediastream.Log;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.lang.ref.WeakReference;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.List;
import java.util.Locale;
import java.util.regex.Pattern;
import static android.content.Intent.FLAG_GRANT_READ_URI_PERMISSION;
import static org.linphone.FragmentsAvailable.CHAT;
interface ChatUpdatedListener {
void onChatUpdated();
}
public class ChatFragment extends Fragment implements OnClickListener, LinphoneChatMessage.LinphoneChatMessageListener, ContactsUpdatedListener{
private static final int ADD_PHOTO = 1337;
private static final int MENU_DELETE_MESSAGE = 0;
private static final int MENU_PICTURE_SMALL = 2;
private static final int MENU_PICTURE_MEDIUM = 3;
private static final int MENU_PICTURE_LARGE = 4;
private static final int MENU_PICTURE_REAL = 5;
private static final int MENU_COPY_TEXT = 6;
private static final int MENU_RESEND_MESSAGE = 7;
private static final int SIZE_SMALL = 500;
private static final int SIZE_MEDIUM = 1000;
private static final int SIZE_LARGE = 1500;
private static final int SIZE_MAX = 2048;
private LinphoneChatRoom chatRoom;
private String sipUri;
private EditText message;
private ImageView edit, selectAll, deselectAll, startCall, delete, sendImage, sendMessage, cancel;
private TextView contactName, remoteComposing;
private ImageView back, backToCall;
private EditText searchContactField;
private LinearLayout topBar, editList;
private SearchContactsListAdapter searchAdapter;
private ListView messagesList, resultContactsSearch;
private LayoutInflater inflater;
private Bitmap defaultBitmap;
private boolean isEditMode = false;
private LinphoneContact contact;
private Uri imageToUploadUri;
private String filePathToUpload;
private TextWatcher textWatcher;
private ViewTreeObserver.OnGlobalLayoutListener keyboardListener;
private ChatMessageAdapter adapter;
private LinphoneCoreListenerBase mListener;
private boolean newChatConversation = false;
private String fileSharedUri, fileAlreadySharedUri;
private static ArrayList<ChatUpdatedListener> ChatUpdatedListeners;
public static void createIfNotExist() {
if (ChatUpdatedListeners == null)
ChatUpdatedListeners = new ArrayList<>();
}
public static void addChatListener(ChatUpdatedListener listener) {
ChatUpdatedListeners.add(listener);
}
public static void removeChatListener(ChatUpdatedListener listener) {
ChatUpdatedListeners.remove(listener);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
final View view = inflater.inflate(R.layout.chat, container, false);
LinphoneManager.addListener(this);
// Retain the fragment across configuration changes
setRetainInstance(true);
this.inflater = inflater;
if(getArguments() == null || getArguments().getString("SipUri") == null) {
newChatConversation = true;
} else {
//Retrieve parameter from intent
sipUri = getArguments().getString("SipUri");
newChatConversation = false;
}
//Initialize UI
defaultBitmap = BitmapFactory.decodeResource(getActivity().getResources(), R.drawable.chat_picture_over);
contactName = (TextView) view.findViewById(R.id.contact_name);
messagesList = (ListView) view.findViewById(R.id.chat_message_list);
searchContactField = (EditText) view.findViewById(R.id.search_contact_field);
resultContactsSearch = (ListView) view.findViewById(R.id.result_contacts);
editList = (LinearLayout) view.findViewById(R.id.edit_list);
topBar = (LinearLayout) view.findViewById(R.id.top_bar);
sendMessage = (ImageView) view.findViewById(R.id.send_message);
sendMessage.setOnClickListener(this);
remoteComposing = (TextView) view.findViewById(R.id.remote_composing);
remoteComposing.setVisibility(View.GONE);
cancel = (ImageView) view.findViewById(R.id.cancel);
cancel.setOnClickListener(this);
edit = (ImageView) view.findViewById(R.id.edit);
edit.setOnClickListener(this);
startCall = (ImageView) view.findViewById(R.id.start_call);
startCall.setOnClickListener(this);
backToCall = (ImageView) view.findViewById(R.id.back_to_call);
backToCall.setOnClickListener(this);
selectAll = (ImageView) view.findViewById(R.id.select_all);
selectAll.setOnClickListene
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
android linphone支持5.0以下手机 h264编码 (538个子文件)
liblinphone-sdk.aar 19.55MB
IInAppBillingService.aidl 8KB
gradlew.bat 2KB
.gitignore 301B
.gitignore 8B
build.gradle 1KB
build.gradle 573B
settings.gradle 16B
gradlew 5KB
app.iml 14KB
TestAAR.iml 902B
ChatFragment.java 73KB
LinphoneManager.java 68KB
LinphoneActivity.java 66KB
CallActivity.java 58KB
SettingsFragment.java 55KB
LinphonePreferences.java 43KB
LinphoneUtils.java 32KB
SlidingDrawer.java 31KB
LinphoneService.java 31KB
LinphoneContact.java 30KB
AssistantActivity.java 30KB
CreateAccountFragment.java 27KB
AccountPreferencesFragment.java 24KB
ContactsListFragment.java 21KB
ContactEditorFragment.java 20KB
ContactsManager.java 20KB
XmlRpcHelper.java 17KB
HistoryListFragment.java 17KB
StatusFragment.java 16KB
ChatListFragment.java 15KB
LinphoneLoginFragment.java 15KB
BluetoothManager.java 12KB
TutorialCardDavSync.java 12KB
CallIncomingActivity.java 12KB
CallVideoFragment.java 11KB
CallOutgoingActivity.java 10KB
PreferencesListFragment.java 9KB
DialerFragment.java 9KB
CreateAccountCodeActivationFragment.java 8KB
Compatibility.java 8KB
LinphoneLauncherActivity.java 8KB
CodecDownloaderFragment.java 8KB
PreferencesMigrator.java 7KB
ContactDetailsFragment.java 7KB
ApiTwentySixPlus.java 7KB
HistoryDetailFragment.java 7KB
ApiElevenPlus.java 7KB
RemoteProvisioningActivity.java 7KB
Digit.java 6KB
ApiTwentyOnePlus.java 6KB
AboutFragment.java 6KB
ApiSixteenPlus.java 5KB
RemoteProvisioningLoginActivity.java 5KB
CreateAccountActivationFragment.java 5KB
LinphoneOverlay.java 5KB
EchoCancellerCalibrationFragment.java 4KB
LoginFragment.java 4KB
AddressText.java 4KB
CallManager.java 4KB
LinphoneSliders.java 4KB
TutorialBuddyStatusActivity.java 4KB
GCMService.java 3KB
TutorialRegistrationActivity.java 3KB
CallButton.java 3KB
TutorialHelloWorldActivity.java 3KB
TutorialChatRoomActivity.java 3KB
KeepAliveReceiver.java 3KB
CallAudioFragment.java 3KB
CountryListFragment.java 3KB
WelcomeFragment.java 3KB
RemoteProvisioningFragment.java 3KB
Numpad.java 3KB
FragmentsAvailable.java 3KB
XmlRpcListenerBase.java 3KB
Authenticator.java 2KB
EraseButton.java 2KB
OutgoingCallReceiver.java 2KB
DozeReceiver.java 2KB
BandwidthManager.java 2KB
BootReceiver.java 2KB
TutorialLauncherActivity.java 2KB
LinphoneNumberOrAddress.java 2KB
LinphoneScrollView.java 2KB
CompatibilityScaleGestureDetector.java 2KB
HookReceiver.java 2KB
AccountEnableReceiver.java 2KB
PhoneStateChangedReceiver.java 2KB
XmlRpcListener.java 2KB
LedPreference.java 2KB
LinphoneGenericActivity.java 2KB
NetworkManager.java 2KB
AndroidTutorialNotifier.java 2KB
SyncAdapter.java 1KB
SyncService.java 1KB
ApiNineteenPlus.java 1KB
EmptyFragment.java 1KB
LinphoneException.java 1KB
AuthenticationService.java 1KB
GCMReceiver.java 1KB
共 538 条
- 1
- 2
- 3
- 4
- 5
- 6
资源评论
OldApple_MrZ
- 粉丝: 33
- 资源: 4
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功