`
yangwei0915
  • 浏览: 461935 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

android调用本地服务示例

阅读更多

在大多数情况下android只需要调用本地的服务(也就是和调用者在同一个进程的服务)就可以,调用服务必须采用的绑定的方式建立和服务的连接,并且得到服务的实例,然后才能调用。下面的例子演示了在Activity调用本地服务,在Activity界面上输入人名,点击确定在按钮的下面显示调用服务的结果:人名":Hello World",步骤如下:

1.创建服务接口,

服务接口提供了服务能提供的供调用者调用的方法。

IService.java

package com.local.service;

public interface IService {
	public String getHelloResult(String name);
}

 

2.服务的实现者

HelloService.java

package com.local.service;

import android.app.Service;
import android.content.Intent;
import android.os.Binder;
import android.os.IBinder;


public class HelloService extends Service {
    private MyServiceBinder myServiceBinder = new MyServiceBinder();
    @Override
    public IBinder onBind(Intent intent) {
        return myServiceBinder;
    }
    public class MyServiceBinder extends Binder implements IService {
		@Override
		public String getHelloResult(String name) {
			// TODO Auto-generated method stub
			return name+":Hello World";
		}
    }
    
}

 

3.调用服务的Activity

LocalServiceCallDemo.java

package com.local.service;

import android.app.Activity;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.ServiceConnection;
import android.os.Bundle;
import android.os.IBinder;
import android.text.Editable;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class LocalServiceCallDemo extends Activity {

	private EditText mEditText;
	private IService serviceInstance;
	private TextView textView;
	ServiceConnection conn = new ServiceConnection() {
		@Override
		public void onServiceConnected(ComponentName name, IBinder service) {
			Log.i("INFO", "Service bound");
			serviceInstance = (IService) service;
		}

		@Override
		public void onServiceDisconnected(ComponentName arg0) {
			Log.i("INFO", "Service Unbound");
		}

	};

	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		Button mButton = (Button) findViewById(R.id.myButton);
		mEditText = (EditText) findViewById(R.id.myEditText);
		textView = (TextView) findViewById(R.id.myTextView01);
		bindService(new Intent("com.local.service.MY_SERVICE"), conn,
				Context.BIND_AUTO_CREATE);
		mButton.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {

				Editable str;
				str = mEditText.getText();
				String result = serviceInstance.getHelloResult(str.toString());
				textView.setText(result);
			}
		});
	}
}

 

 

分享到:
评论

相关推荐

    Androidstudio调用jni的示例

    这个“Androidstudio调用jni的示例”是一个基础教程,旨在帮助初学者理解如何在Android Studio项目中使用JNI来调用本地C/C++代码。下面将详细介绍这个示例中的关键步骤和涉及的知识点。 1. **创建JNI接口** 在Java...

    android 服务概述 本地服务示例

    本篇文章将深入探讨Android服务的概念,本地服务的实现,并通过一个示例来阐述如何创建和使用本地服务。 首先,理解服务的基本概念是非常重要的。服务并没有自己的用户界面,它的工作完全在后台进行。服务可以被...

    Web调用本地Android应用

    本文将深入探讨“Web调用本地Android应用”的实现原理、方法以及实际应用案例。 首先,我们要理解的是WebView组件。WebView是Android SDK提供的一种用于显示网页内容的视图组件。通过WebView,我们可以在Android...

    android jni调用资料示例

    使用JNI调用本地方法涉及以下步骤: - 在Java类中声明native方法,并使用`System.loadLibrary()`加载对应的本地库。 - 在对应的C/C++头文件中声明JNI函数原型,通常以`JNIEXPORT`和`JNIEnv*`开头。 - 实现C/C++...

    android 本地服务通信 AIDL service服务与activity之间的通信

    本示例“android 本地服务通信 AIDL service服务与activity之间的通信”通过一个学号查询学生的例子,清晰地展示了如何利用AIDL实现在Activity和Service之间的数据传递。 首先,我们需要了解AIDL的基本概念。AIDL...

    如何在android app调用webservice的示例源码

    本示例源码详细展示了如何在Android应用程序中调用Web服务,这对于理解和实践Android与Web服务通信至关重要。以下将详细介绍这个过程涉及的关键知识点。 1. **Android网络请求基础**:在Android中,所有网络操作...

    android 调用系统自带录音机

    在Android平台上,调用系统自带的录音机是开发者经常遇到的需求,这可以帮助用户方便地录制音频并集成到应用中。本文将深入探讨如何在Android应用中实现这一功能,并结合"AutoRecoder"这个示例来讲解相关知识点。 ...

    Qt调用Android原生Toast控件示例,含源码

    在IT领域,尤其是在移动应用开发中,经常需要跨平台的解决方案。Qt是一个强大的跨平台应用程序开发框架,支持Windows、Linux、macOS...这个方法同样适用于其他需要调用Android原生功能的场景,如启动服务、发送广播等。

    Android通过jin调用C示例

    "Android通过JNI调用C示例"这个主题就是围绕这一技术展开的。 JNI是Android系统中一个关键组件,它允许开发者在Java应用中嵌入本地代码,以提高性能或者利用已有的C/C++库。在Android应用开发中,JNI通常用于以下几...

    Android调用WPS

    总的来说,Android调用WPS涉及的步骤包括集成SDK、注册应用获取密钥、调用API并处理回调。在具体实现过程中,要注意权限管理、错误处理以及用户体验。通过熟练掌握这些知识点,你将能够在Android应用中无缝地集成WPS...

    android 使用jni调用c++

    本教程将详细介绍如何在Android项目中使用JNI调用C++代码。 首先,你需要配置Android的NDK(Native Development Kit)。NDK是一组工具,开发者可以用它来编写用C和C++编写的应用程序模块,这些模块可以直接在...

    android调用前后置摄像头拍照

    以上就是Android调用前后置摄像头拍照的基本步骤。你可以根据实际需求进行扩展,比如添加闪光灯控制、设置拍照质量、裁剪图片等。这个`Android_Camera`压缩包文件可能包含了实现上述功能的完整代码示例,你可以参考...

    Android中调用js方法及js中调用本地方法

    1. **Android调用JavaScript** 要在Android中调用JavaScript的方法,可以使用WebView的`loadUrl()`或`evaluateJavascript()`方法。 - `loadUrl("javascript:yourJsFunction()")`: 这种方式会在页面加载完成后...

    android调用天气demo

    本示例“android调用天气demo”提供了一个很好的起点,帮助开发者了解如何实现这一功能。不过,值得注意的是,这个demo存在一个已知的bug,即在用户输入城市名时,如果输入了非城市名或非法字符,应用程序可能会意外...

    android调用c和c++源代码

    JNI是Android系统提供的一种机制,它允许Java代码调用本地(即C/C++)代码,并且本地代码也可以调用Java方法。JNI接口包括头文件和库文件,开发者需要编写相应的JNI函数并在Java代码中声明对应的native方法。 在...

    android本地服务器demo

    "android本地服务器demo"就是一个这样的示例,它展示了如何在Android设备上搭建一个简单的服务器,使得在同一局域网内的其他设备可以通过IP地址与其进行通信。 首先,我们要了解Android作为服务器的基本原理。...

    JniDemo Android调用C语言

    本项目"JniDemo Android调用C语言"提供了一个完整的示例,展示了如何在Android Studio环境中利用JNI调用C语言代码。 首先,我们来理解一下JNI的基本概念。JNI是Java虚拟机(JVM)和本地代码之间的桥梁,它定义了一...

    Android JNI 用C函数写本地库读写文件,底层调用小例子

    JNI是Android提供的一种接口,使得Java应用程序可以调用C/C++编写的原生代码。这在需要高性能计算、访问硬件特性或利用已有的C库时特别有用。JNI的核心在于`JNIEnv`指针,它是Java虚拟机与本地代码之间的桥梁,提供...

    Android 调用相机拍照 添加照片水印

    以上就是Android调用相机拍照并添加照片水印的基本流程。在实际开发中,你可能还需要根据具体需求进行优化,例如添加图片裁剪功能、支持图片旋转、自定义水印样式等。记住,良好的用户体验和性能优化也是必不可少的...

    uniapp调用原生Android SDK

    【uniapp调用原生Android SDK】和【uniapp调用原生IOS SDK】涉及到的是在跨平台开发框架uniapp中如何与原生系统进行深度交互的技术。uniapp是一个使用Vue.js开发的所有平台的统一解决方案,它允许开发者通过一套代码...

Global site tag (gtag.js) - Google Analytics