badgerduke
badgerduke

Reputation: 1013

not understanding compile errors in AIDL files

I'm taking my first foray into Android services and having trouble with compile errors in AIDL files. I am using Eclipse (with Android Development Tools) and Android 4.1. I have the following AIDL files:

Weather.aidl

package ws.hamacher.weatherservice.service;

parcelable ws.hamacher.weatherservice.dto.Weather;

In this file, I get "interface ws.hamacher.weatherservice.dto.Weather should be declared in a file called ws\hamacher\weatherservice\service\ws.aidl." on the parcelable line, but this refers to my Java class!

IWeatherService.aidl

package ws.hamacher.weatherservice.service;

import ws.hamacher.weatherservice.service.Weather;

interface IWeatherService {
    void addToWeatherService(in Weather weather);
    void deleteFromWeatherService(in Weather weather);
    List<Weather> getLocations();
}

Here again, the import statement gives a similar error "interface ws.hamacher.weatherservice.dto.Weather should be declared in a file called ws\hamacher\weatherservice\service\ws.aidl." This should be referring to the first file above right?

Along with that, the method declarations all have errors, to the tune of "unknown type Weather".

Any help would be appreciated.

Upvotes: 2

Views: 5066

Answers (2)

badgerduke
badgerduke

Reputation: 1013

Solved it. My Weather.aidl had to be in the same directory as my parcelable Weather class.

Upvotes: 0

herbertD
herbertD

Reputation: 10965

If you want to send custom object such as Weather class, you should creat a package: ws.hamacher.weatherservice.dto

write :

Weather.java

in package: ws.hamacher.weatherservice.dto like this:

 public class Weather implements Parcelable {
....
}

Then, write Weather.aidl:

package ws.hamacher.weatherservice.dto;

parcelable Weather;

Please see AndroidMusicPlayer and AndroidMusicPlayerClient for real code.

Upvotes: 2

Related Questions