许多应用程序允许共享从图库中挑选的图像.
他们上传原始图片文件吗?这是1-3 MB?或者他们处理?
在任何情况下,我如何从文件路径中获取图像,通过降低分辨率来减小其大小,并将其保存在其他地方并尝试上传?
我试过了:
Bitmap photo = decodeSampledBitmapFromFile(filePath, DESIRED_WIDTH,
DESIRED_HEIGHT);
FileOutputStream out = new FileOutputStream(filePath);
photo.compress(Bitmap.CompressFormat.JPEG, 100, out);
public static Bitmap decodeSampledBitmapFromFile(String path, int reqWidth,
int reqHeight) {
final BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
BitmapFactory.decodeFile(path, options);
final int height = options.outHeight;
final int width = options.outWidth;
options.inPreferredConfig = Bitmap.Config.ARGB_8888;
int inSampleSize = 1;
if (height > reqHeight) {
inSampleSize = Math.round((float) height / (float) reqHeight);
}
int expectedWidth = width / inSampleSize;
if (expectedWidth > reqWidth) …
Run Code Online (Sandbox Code Playgroud) import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.GooglePlayServicesClient.ConnectionCallbacks;
import com.google.android.gms.common.GooglePlayServicesClient.OnConnectionFailedListener;
import com.google.android.gms.plus.GooglePlusUtil;
import com.google.android.gms.plus.PlusClient;
import android.os.Bundle;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Intent;
import android.content.IntentSender.SendIntentException;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
public class MainActivity extends Activity implements ConnectionCallbacks,
OnConnectionFailedListener {
private static final int REQUEST_CODE_RESOLVE_ERR = 7;
private ProgressDialog mConnectionProgressDialog;
private PlusClient mPlusClient;
private ConnectionResult mConnectionResult;
private String TAG = "GmailLogin";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
int errorCode = GooglePlusUtil.checkGooglePlusApp(this);
if (errorCode != GooglePlusUtil.SUCCESS) {
GooglePlusUtil.getErrorDialog(errorCode, this, 0).show(); …
Run Code Online (Sandbox Code Playgroud) 就像LinkedIn前三个屏幕一样
- 溅
- 登录/注册按钮
- 登录/注册表格
所有都具有与背景相同的图像,但是当我们从一个活动移动到另一个活动时,背景图像从右侧滚动到左侧.
我只能尝试,overridePendingTransition(R.anim.slide_in_left, R.anim.slide_out_right);
但这不是它的样子.
如果我向设备发送通知,并且该设备处于脱机状态,我会得到以下内容:
错误:不可用
我必须重新发送.
我的问题是:
GCM服务器是否会将这些通知保留在队列中并在设备联机时自动重新发送?或者必须由我完全处理.
因为如果GCM服务器要自动发送它们(一旦设备在线),直到它实际发送通知,我的服务器假定它们已经被发送.如何跟踪成功重新发送通知的时间?
我可能会在我的服务器端标记通过查看Unavailable error message
但不能发送通知,但无法知道如何在GCM成功发送通知后将其标记为已发送.
谢谢
有没有简单的方法将2 TextView下拉列表设置为AutoCompleteTextView.
有android.R.layout.two_line_list_item
哪些我找不到任何如何使用的例子.
所以,我试过这个:
public class TwoLineDropdownAdapter extends BaseAdapter {
private LayoutInflater mInflater = null;
private Activity activity;
public ArrayList<TwoLineDropDown> values = new ArrayList<TwoLineDropDown>();
public TwoLineDropdownAdapter(Activity a, ArrayList<TwoLineDropDown> items) {
values = items;
activity = a;
mInflater = (LayoutInflater) activity
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
public int getCount() {
return values.size();
}
public TwoLineDropDown getItem(int position) {
return values.get(position);
}
public long getItemId(int position) {
return position;
}
public static class ViewHolder {
public TextView title;
public TextView description;
}
public …
Run Code Online (Sandbox Code Playgroud) 我想在我的应用程序中登录Google Plus.我可以连接但无法获取当前用户的个人资料信息
@Override
public void onConnected() {
String accountName = mPlusClient.getAccountName();
mPlusClient.loadPerson(this, "me");
}
@Override
public void onPersonLoaded(ConnectionResult status, Person person) {
Log.d("onPersonLoaded - ConnectionResult", "" + status);
Log.d("onPersonLoaded - person", "" + person);
if (status.getErrorCode() == ConnectionResult.SUCCESS) {
Log.d(TAG, "Display Name: " + person.getDisplayName());
}
}
Run Code Online (Sandbox Code Playgroud)
我能得到帐户名onConnected
,但onPersonLoaded
给null
的person
日志显示:
onPersonLoaded - ConnectionResult(29861): ConnectionResult{statusCode=NETWORK_ERROR, resolution=null}
onPersonLoaded - person(29861): null
Run Code Online (Sandbox Code Playgroud)
来自这里的文档
public static final int NETWORK_ERROR
发生网络错误.重试应解决问题.
常数值:7(0x00000007)
但无论我重试多少次,我都会得到同样的错误.这些是我使用的权限:
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission …
Run Code Online (Sandbox Code Playgroud) 我使用从Web服务器获取的数据填充AutoCompleteTextView.这需要3-5秒.如果没有表明它的自动完成没有人等待.因此,我想显示一个这样的指标:
我试过这个:
private class getAutoCompletes extends AsyncTask<String, Void, String> {
private String response;
@Override
protected String doInBackground(String... params) {
//get autocomplete data
return response;
}
@Override
protected void onPostExecute(String result) {
autoComplete.setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0);
ArrayAdapter<String> AutoCompleteAdapter = new ArrayAdapter<String>(
MainActivity.this,
android.R.layout.simple_dropdown_item_1line, autocompletes);
autoComplete.setAdapter(AutoCompleteAdapter);
autoComplete.showDropDown();
}
@Override
protected void onPreExecute() {
super.onPreExecute();
autoComplete.setCompoundDrawablesWithIntrinsicBounds(0, 0,
R.drawable.rotating_drawable, 0);
}
}
Run Code Online (Sandbox Code Playgroud)
R.drawable.rotating_drawable
<animation-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:drawable="@drawable/spinner1"
android:duration="50"/>
<item
android:drawable="@drawable/spinner2"
android:duration="50"/>
<item
android:drawable="@drawable/spinner3"
android:duration="50"/>
<item
android:drawable="@drawable/spinner4"
android:duration="50"/>
</animation-list>
Run Code Online (Sandbox Code Playgroud)
但这没效果.右侧抽屉是固定的.
同样是上面的图片那种具有搜索布局中ImageView
,AutoCompleteTextView …
SpannableStringBuilder sb = new SpannableStringBuilder("Hello World");
ForegroundColorSpan fcs = new ForegroundColorSpan(R.color.text_blue);
sb.setSpan(fcs, 5, 11,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
Run Code Online (Sandbox Code Playgroud)
RES /价值/ color.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="text_blue">#FF39ACEE</color>
</resources>
Run Code Online (Sandbox Code Playgroud)
颜色已改变,但改变了别的东西,而不是我想要的蓝色.
谢谢.
在我的应用程序中,一旦我注册了一个设备,它就会被存储为持久数据,以便检查设备是否已经注册.
在服务器端,我将它们与user_id一起存储在数据库中,user_id是用户的唯一ID.
[user_id] [gcm_registration_id]
现在我无法解决这个案子:
如果用户注销:
必须清除存储在SharedPreferences中的registration_id,因为其他用户可能会在下次启动应用程序时登录.
另外,我必须从我的数据库中删除与该registration_id相对应的行,因为该设备(当前没有登录用户)不得再接收任何通知.
问题是我的数据库使用canonical_ids更新或者说我在调用时得到的最新registration_ids
https://android.googleapis.com/gcm/send
因此,我有可能找不到要删除的已注销用户的旧registration_id,这仍然允许向未登录的用户发送通知.
此外,我无法删除与我的数据库匹配user_id的行,因为用户可能只从1个设备注销,而且他/她仍然登录的设备较少.
我如何知道对于此特定用户和设备,注册ID是否已更改?
我应该将所有旧的注册ID及其相应的canonical_id存储在我的数据库中吗?
在GCM Docs中给出了:
它不为消息数据提供任何内置用户界面或其他处理.GCM只是将收到的原始消息数据直接传递给Android应用程序,Android应用程序完全控制如何处理它.例如,应用程序可能会发布通知,显示自定义用户界面或静默同步数据
但没有关于如何创建自定义通知UI的任何内容.
如何创建一个自定义用户界面,比如说一个带有2个按钮等的小对话框,用于GCM通知.像gmail一样,可以选择从状态栏通知中归档或删除邮件.
码:
public void onReceive(Context context, Intent intent) {
GoogleCloudMessaging gcm = GoogleCloudMessaging.getInstance(context);
ctx = context;
String messageType = gcm.getMessageType(intent);
if (GoogleCloudMessaging.MESSAGE_TYPE_SEND_ERROR.equals(messageType)) {
} else if (GoogleCloudMessaging.MESSAGE_TYPE_DELETED
.equals(messageType)) {
} else {
sendNotification(intent.getExtras().getString("msg"));
}
setResultCode(Activity.RESULT_OK);
}
private void sendNotification(String msg) {
mNotificationManager = (NotificationManager) ctx
.getSystemService(Context.NOTIFICATION_SERVICE);
PendingIntent contentIntent = PendingIntent.getActivity(ctx, 0,
new Intent(ctx, NotificationsActivity.class), 0);
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(
ctx).setSmallIcon(R.drawable.ic_launcher)
.setContentTitle("GCM Notification")
.setContentText(msg);
mBuilder.setContentIntent(contentIntent);
Notification mNotification = mBuilder.getNotification();
SharedPreferences sp = ctx.getSharedPreferences(
GCMDemoActivity.GCM_NOTIF_PREF, …
Run Code Online (Sandbox Code Playgroud)