小编Rav*_*ari的帖子

在Android中获取用户GPS背景的最佳方式

在我的Android应用程序中,我希望每隔几分钟获取用户当前位置,并使用Web服务更新到我的中心服务器.目前我正在使用Fused Location Provide获取用户当前位置,请参阅链接

现在我想知道经常获取用户位置和调用Web服务的最佳方法是什么.

下面是我的代码,它给了我用户当前的位置: -

     locationrequest = LocationRequest.create();
     locationrequest.setInterval(10000);
     locationclient.requestLocationUpdates(locationrequest,new com.google.android.gms.location.LocationListener() {

        @Override
        public void onLocationChanged(Location location) {
              Log.i(TAG, "Last Known Location :" + location.getLatitude() + "," + location.getLongitude());
        }
    });
Run Code Online (Sandbox Code Playgroud)

现在从哪里我必须调用此代码.我可以在后台服务或其他地方使用它.

请提出你的想法.

TIA.

gps android location-provider fusedlocationproviderapi

94
推荐指数
6
解决办法
19万
查看次数

扩展类和android.support.v7.widget.CardView时出错

我想在我的项目中使用CardView,但是当我运行我的应用程序时,我收到以下错误.我正在使用Eclipse.

Error: Error inflating class and android.support.v7.widget.CardView

The graphical view of my xml file says 'The following classes could not be instantiated:
- android.support.v7.widget.CardView (Open Class, Show Error Log)
See the Error Log (Window > Show View) for more details.'
Run Code Online (Sandbox Code Playgroud)

请帮忙.

这是我使用过的片段的布局 CardView

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.log.MyContactsFragment" >

<!-- TODO: Update blank fragment layout -->

<android.support.v7.widget.CardView
    xmlns:card_view="http://schemas.android.com/apk/res-auto"
    android:id="@+id/cvContactDetails"
    android:layout_width="match_parent"
    android:layout_height="200dp"
    android:layout_gravity="center"
    android:background="?android:attr/selectableItemBackground"
    android:clickable="false"
    android:elevation="20dp" >

    <TextView
        android:id="@+id/tvContacts"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Contact Info" />

    <Button
        android:id="@+id/bDelete"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" …
Run Code Online (Sandbox Code Playgroud)

eclipse android android-cardview android-5.0-lollipop android-recyclerview

25
推荐指数
3
解决办法
6万
查看次数

NestedScrollView内的子节点不能覆盖屏幕的全高

我在我的片段中使用NestedScrollView.在我的xml里面的RelativeLayout但它没有覆盖整个屏幕高度.

以下是我的代码 -

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:fitsSystemWindows="true"
android:background="@color/black"
android:layout_width="match_parent"
android:layout_height="match_parent">

<RelativeLayout
    android:background="@color/red_error_color"
    android:layout_width="match_parent"
    android:layout_height="match_parent">


</RelativeLayout>
</android.support.v4.widget.NestedScrollView>
Run Code Online (Sandbox Code Playgroud)

在运行代码时,只有黑色背景可见但不是红色,因为我的子视图背景为红色.

提前致谢

android android-scrollview android-relativelayout android-nestedscrollview

25
推荐指数
1
解决办法
8931
查看次数

java.lang.NoClassDefFoundError:android.support.v7.appcompat.R $ styleable

我正在使用终端[不是日食].我得到了以下异常错误,而我emulator.debug成功使用并成功安装.但模拟器显示Unfortunatly app has stop.然后我运行$ adb logcat它将显示以下.

java.lang.NoClassDefFoundError: android.support.v7.appcompat.R$styleable
at android.support.v7.app.ActionBarActivityDelegate.onCreate(ActionBarActivityDelegate.java:107)
at android.support.v7.app.ActionBarActivityDelegateICS.onCreate(ActionBarActivityDelegateICS.java:58)
at android.support.v7.app.ActionBarActivity.onCreate(ActionBarActivity.java:98)
at com.example.trintwo.MainActivity.onCreate(MainActivity.java:19)
at android.app.Activity.performCreate(Activity.java:5231)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
at android.app.ActivityThread.access$800(ActivityThread.java:135)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5017)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
at dalvik.system.NativeStart.main(Native Method)
Run Code Online (Sandbox Code Playgroud)

我得到了这个错误,即使我安装了android支持库,我android-support-v7-appcompat.jarandroid/support/v7/appcompat/lib路径中检查了我将如何清除此错误.

android exception missing-data

17
推荐指数
2
解决办法
5万
查看次数

访问grails gsp中的http请求参数

我正在使用grails开发一个Web应用程序,其中点击电子邮件用户中的链接重定向到我的grails网页.我的要求是访问我在gsp页面上的电子邮件链接中传递的http请求参数.

例如: - 我已通过链接http://example.com/testpage?a=something&b=12345,当用户点击此链接时,他会重定向到http://example.com/testpage,然后我可以从请求中获取参数值.
喜欢a=somethingb=12345.提前致谢.

grails http request

8
推荐指数
2
解决办法
1万
查看次数

使用表面视图android录制视频

我必须创建一个Android应用程序,我正在尝试使用表面视图录制视频和捕获图像.到目前为止,我能够捕获视频,但在录制视频中遇到问题.我的视频录制代码是 -

onCreate(){
      ..
     surfaceHolder = surfaceView.getHolder();
     surfaceHolder.addCallback(this);
     surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
     startRecording();
     .
     .
}


protected void startRecording() throws IOException
    {
        if(mCamera==null)
            mCamera = Camera.open();

         String filename;
         String path;

         path= Environment.getExternalStorageDirectory().getAbsolutePath().toString();

         Date date=new Date();
         filename="/rec"+date.toString().replace(" ", "_").replace(":", "_")+".mp4";

         File file=new File(path,filename);

        mrec = new MediaRecorder(); 

        mCamera.lock();
        mCamera.unlock();


        mrec.setCamera(mCamera);    
        mrec.setVideoSource(MediaRecorder.VideoSource.CAMERA);
        mrec.setAudioSource(MediaRecorder.AudioSource.MIC);     
        mrec.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
        mrec.setVideoEncoder(MediaRecorder.VideoEncoder.MPEG_4_SP);
        mrec.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
        mrec.setPreviewDisplay(surfaceHolder.getSurface());
        mrec.setOutputFile(path+filename);
        mrec.setMaxDuration(10000); 
  }
       @Override
    public void surfaceChanged(SurfaceHolder holder, int format, int width,int                height) {      

        Camera.Parameters parameters = mCamera.getParameters();      
        parameters.setPreviewSize(width, height);     
        try {
            mCamera.setPreviewDisplay(surfaceHolder);
        } catch (IOException e) { …
Run Code Online (Sandbox Code Playgroud)

android video-recording android-mediarecorder

8
推荐指数
1
解决办法
2万
查看次数

停止后台服务当应用程序进入后台时

我在我的Android应用程序中有后台服务,我从MainActivity onResume()方法启动服务,它工作正常.但是当用户按下主页按钮时如何停止服务.因为当前用户按下主页按钮然后应用程序移动到后台然后用户打开一些其他应用程序然后一段时间后调用我的服务方法和app强制停止.Below是我的启动服务代码 -

Intent msgIntent = new Intent(mContext, MyBackgroundService.class);
        startService(msgIntent);
Run Code Online (Sandbox Code Playgroud)

提前致谢.

EDITED

在我的服务中,我使用下面的代码 -

 public void callAsynchronousTask() {
final Handler handler = new Handler();
timer = new Timer();
TimerTask doAsynchronousTask = new TimerTask() {       
    @Override
    public void run() {
        handler.post(new Runnable() {
            public void run() {       
                try {
                    callWebservice();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }
};
timer.schedule(doAsynchronousTask, START_DELAY, DELAY);
 }

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
    callAsynchronousTask();
    return Service.START_NOT_STICKY;
}

@Override
public …
Run Code Online (Sandbox Code Playgroud)

android background-service

8
推荐指数
1
解决办法
1万
查看次数

在Android媒体录制器中预览显示

在android中如何在媒体记录器启动之前显示预览表面.我的应用程序具有视频录制功能,当我导航到视频录制片段时,它显示黑屏,当我开始使用开始录制相机预览录制时,显示和录制开始.

如何在录制前开始预览.我添加了我在onCreateView()片段中使用的代码 -

surfaceHolder = mySurfaceView.getHolder();
camera = Camera.open();
if(camera!=null){
    camera.setDisplayOrientation(90);
    Camera.Parameters param;
    param = camera.getParameters();
    param.setPreviewFrameRate(20);
    param.setPreviewSize(176, 144);
    camera.setParameters(param);
    camera.setPreviewDisplay(surfaceHolder);
}

mediaRecorder = new MediaRecorder();
camera.unlock();
mediaRecorder.setCamera(camera);
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.DEFAULT);
mediaRecorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT);
CamcorderProfile camcorderProfile_HQ = CamcorderProfile
            .get(CamcorderProfile.QUALITY_HIGH);
mediaRecorder.setProfile(camcorderProfile_HQ);
String filePath = getOutputMediaFile(MEDIA_TYPE_VIDEO).getPath();
fileUri = getOutputMediaFileUri(MEDIA_TYPE_VIDEO);
mediaRecorder.setOutputFile(filePath);
Run Code Online (Sandbox Code Playgroud)

以及我在开始按钮点击时使用的代码 -

mediaRecorder.setPreviewDisplay(surfaceHolder.getSurface());
mediaRecorder.prepare();
mediaRecorder.start();
Run Code Online (Sandbox Code Playgroud)

所以我可以使用上面的代码重新编码视频,但无法在录制开始前显示预览.请帮助我在我失踪的地方.因为在重新编码视频之前会显示黑屏.

提前致谢.

android surfaceview android-mediarecorder

6
推荐指数
1
解决办法
5070
查看次数

Google plus集成:无法加载可见的圈子

我想从我的应用程序中获取google plus的人员信息列表:朋友个人资料图片网址,可见名称和ID.

这是一个官方谷歌加集成教程.我通过本教程制作测试应用程序并陷入错误:

Error requesting visible circles: Status{statusCode=NETWORK_ERROR, resolution=null}
Run Code Online (Sandbox Code Playgroud)

实施Google Api客户端:

mGoogleApiClient = new GoogleApiClient.Builder(this)
            .addConnectionCallbacks(this)
            .addOnConnectionFailedListener(this)
            .addApi(Plus.API, null)
            .addScope(Plus.SCOPE_PLUS_PROFILE)
            .addScope(Plus.SCOPE_PLUS_LOGIN)
            .build();
Run Code Online (Sandbox Code Playgroud)

这是onResult:

@Override
public void onResult(People.LoadPeopleResult loadPeopleResult) {

    if (loadPeopleResult.getStatus().getStatusCode() == CommonStatusCodes.SUCCESS) {
        PersonBuffer personBuffer = loadPeopleResult.getPersonBuffer();
        try {
            int count = personBuffer.getCount();
            for (int i = 0; i < count; i++) {
                Log.d("TEST", "Display name: " + personBuffer.get(i).getDisplayName());
            }
        } finally {
            personBuffer.close();
        }
    } else {
        Log.e("TEST", "Error requesting visible circles: " + loadPeopleResult.getStatus());
    } …
Run Code Online (Sandbox Code Playgroud)

android google-plus

5
推荐指数
1
解决办法
3544
查看次数

Facebook帐户工具包 - 返回错误"我们很抱歉,出了点问题." 在android中

我正在Android应用程序中实现Facebook帐户工具包.我已完成初始设置,当我运行应用程序时,它显示错误

我们很抱歉,出了点问题.

https://developers.facebook.com/docs/accountkit/android

我搜索了很多,但没有找到任何有用的东西.如果有人有分享的话请在这里分享.

android facebook

5
推荐指数
1
解决办法
3367
查看次数

webview打开后Android默认语言环境更改

我坚持使用 webview 和 Locale。在我的多语言应用程序中,当用户从应用程序设置更改应用程序语言,然后用户导航到应用程序内的 webview,然后应用程序区域设置更改为英语,这是设备默认语言。

以下是我从设置更改语言的代码 -

private String Locale_English = "en";
private String Locale_RU = "ru";
private void setLanguage(String type){
    Locale locale = new Locale(type);
    Locale.setDefault(locale);
    finish();
}
Run Code Online (Sandbox Code Playgroud)

假设用户选择俄语,在此用户导航到应用程序仪表板和所有屏幕上的语言更改后,但如果用户从左侧菜单打开静态页面,在应用程序中打开 webview,则设备区域设置更改,仪表板上的所有标签更改为英语。

下面是我的基本活动中的代码,它是仪表板活动的父级

 @Override
protected void onStart() {
    super.onStart();
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N){
        mCurrentLocale = getResources().getConfiguration().getLocales().get(0);
    } else{
        //noinspection deprecation
        mCurrentLocale = getResources().getConfiguration().locale;
    }
}

@Override
protected void onRestart() {
    super.onRestart();
    Locale locale = getLocale(this);
    if (!locale.equals(mCurrentLocale)) {
        mCurrentLocale = locale;
        setLocale();
        recreate();
    }
}

private void setLocale() {
    final Resources …
Run Code Online (Sandbox Code Playgroud)

multilingual android locale webview

5
推荐指数
0
解决办法
731
查看次数

检查传入号码是存储在联系人列表中还是不存在于android中

在我的Android应用程序,当一个来电我想显示我的自定义ui,我能够做到这一点.不,我想检查收到的号码是否来自联系人.下面是我执行此操作的代码,但它为存储在我的联系人列表中的传入号码返回null.

public String findNameByNumber(String num){
    Uri uri = Uri.withAppendedPath(Phones.CONTENT_FILTER_URL, Uri.encode(num));

    String name = null;
    Cursor cursor = mContext.getContentResolver().query(uri, 
                        new String[] { Phones.DISPLAY_NAME }, null, null, null);
    if (cursor != null && cursor.moveToFirst()) {
        name = cursor.getString(cursor.getColumnIndex(Phones.DISPLAY_NAME));
        cursor.close();
        callyName.setText(name+" Calling..");
    }
    return name;
}
Run Code Online (Sandbox Code Playgroud)

我有来自一个号码的来电+ 917878787878,但是在我的联系人中,这个联系人存储为名称XYZ,编号为78 78 787878,由于数字之间有空格而形成,并且还尝试排除+ 91但仍然返回null .那么我怎样才能找到以任何格式存储的号码.哪些号码可以与国家代码一起存储.

提前致谢.

android android-contentprovider

2
推荐指数
1
解决办法
1676
查看次数